【问题标题】:Matlab 3dplot function to plot magnitude of a sinusoid varying frequency and timeMatlab 3dplot函数绘制正弦变化频率和时间的幅度
【发布时间】:2018-06-01 22:16:51
【问题描述】:

我正在尝试创建一个 3d 图来显示添加 3 个不同相位的正弦曲线的幅度。三个轴是:时间、频率和幅度。我只是不确定如何将我拥有的东西转换成函数 3dplot 可以使用的东西。新手,谢谢!

clear;
clc;

inc = 100;
i = 1;
i2 = 1;
for t = 0:(2.413E-9)/inc:2.413E-9 %time range to view signals
for f = 56E9:(64E9-56E9)/inc:64E9 %frequencies from 56ghz - 64ghz

w = 2*pi*f;

wave1 = 0.5*sin(w.*t + (0.25*2));%sinusoids of varying distances, arbitrary amplitude
wave2 = 0.5*sin(w.*t);
wave3 = 0.5*sin(w.*t - (0.25*2));
mag = wave1 + wave2 + wave3;%combining waves

combined(i,i2,i) = mag;
    %f,time,magnitude

i = i + 1;%changing frequency index    
end
i = 1;
i2 = i2 + 1;%changing time index
end

编辑:谢谢大家,我想我找到了我想要的东西。

【问题讨论】:

  • 欢迎来到本站!

标签: matlab plot 3d


【解决方案1】:

以下是一些建议:

  • 您可能希望将combined(i,i2,i) = mag; 替换为combined(i,i2) = mag;。这将创建 combined 作为矩阵(二维数组),将幅度作为时间和频率的函数
  • 要绘制它,请使用 surfimagesc 之类的东西。
  • 代码可以向量化。这使它更紧凑,可以说更具可读性和更快。
  • 如果您更改inc,该数字会发生显着变化。这可能是当前inc 导致aliasing 在表示中的标志。您可能需要增加该参数。
  • 您可能希望avoid 使用i 作为变量名。

代码:

clear;
clc;
inc = 100;
t = 0:(2.413E-9)/inc:2.413E-9; %time range to view signals
f = 56E9:(64E9-56E9)/inc:64E9 %frequencies from 56ghz - 64ghz
w = 2*pi*f;
wave1 = 0.5*sin(bsxfun(@times, w.', t) + (0.25*2));%sinusoidsdistances
wave2 = 0.5*sin(bsxfun(@times, w.', t));
wave3 = 0.5*sin(bsxfun(@times, w.', t) - (0.25*2));
combined = wave1 + wave2 + wave3;%combining waves
%f,time,magnitude
surf(t, f, combined, 'edgecolor', 'none')
xlabel time
ylabel frequency

【讨论】:

    猜你喜欢
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多