【发布时间】:2014-10-10 10:28:07
【问题描述】:
我想像这样创建具有随时间变化的频率的正弦时间序列。我们的观察时间从 2.93 秒,从 0 到 1 秒>
% non stationary signal with time varying frequency
fs=100 ; % sampling frequency
ts=1/fs;
t=(0:ts:2.93); % time vector
% i want to create signal which consist of sinusoidal components in
% addtiive of white noise , frequencies are defined in time as
x=25*sin(2*pi*23*t(t<1))+20*cos(2*pi*24*t(t<1))+24*sin(2*pi*22*t(t<1))+10*randn(size(t));
y=21*sin(2*pi*20*t(t>1))+26*cos(2*pi*17*t(t>1))+21*sin(2*pi*29*t(t>1))+10*randn(size(t));
z=[x';y'];
plot(t',z);
但它向我显示错误 Error using +
Matrix dimensions must agree.
Error in time_frequency (line 7)
x=25*sin(2*pi*23*t(t<1))+20*cos(2*pi*24*t(t<1))+24*sin(2*pi*22*t(t<1))+10*randn(size(t));
我在哪里有错误的尺寸?在解决这个问题之后,我认为代码对应于我想要的情况吗?提前谢谢
更新:
% non stationary signal with time varying frequency
fs=100 ; % sampling frequency
ts=1/fs;
t=(0:ts:2.93); % time vector
t1=t(t<1);
t2=t(t>=1);
wn=10*randn(size(t1));
wn1=10*randn(size(t2));
% i want to create signal which consist of sinusoidal components in
% addtiive of white noise , frequencies are defined in time as
x=25*sin(2*pi*23*t(t<1))+20*cos(2*pi*24*t(t<1))+24*sin(2*pi*22*t(t<1))+wn;
y=21*sin(2*pi*20*t(t>=1))+26*cos(2*pi*17*t(t>=1))+21*sin(2*pi*29*t(t>=1))+wn1;
z=[x';y'];
plot(t',z);
【问题讨论】:
-
您的问题是在 x,y 定义的末尾
randn()。您正在尝试添加不同维度的数组。 size(t) 产生的值不是t(t<1)或t(t>1)。 -
aa 所以我应该在之前定义它
-
您可以使用
randn(size(t(t<1))),也可以忽略它,在定义z之后执行z=z+10*randn(size(t))。这些都应该工作 -
另一个小错误是您“删除”了
t==1您必须在 x 中使用t(t<=1)或在 y 定义中使用t(t>=1),否则 z 和 t 的尺寸将不一样 -
我更新了请看
标签: matlab signals signal-processing