我想用这样的时变频率创建正弦时间序列。我们有观察时间从2.93秒,从0到1秒我想创建正弦数据加白噪声与一组频率,而从1到2.93秒另一组频率,为此我写了下面的代码
% 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);
但它显示错误使用+
时出错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);
答案 0 :(得分:2)
我分离了&#34; x =&#34;用于隔离错误的行:
x1 = 25*sin(2*pi*23*t(t<1));
x2 = 20*cos(2*pi*24*t(t<1));
x3 = 24*sin(2*pi*22*t(t<1));
x4 = 10*randn(size(t(t<1)));
现在x1,x2,x3和x4的大小相同。您只能对相同大小的数组求和。现在这段代码不会出错:
>> x = [x1 + x2 + x3 + x4];
>> plot(t, x)
然后重复y,替换&#34;少于1&#34;用&#34;大于或等于1&#34;。
答案 1 :(得分:1)
您的问题在x,y定义的末尾是randn()
。您正在尝试添加不同维度的数组。 size(t)
会产生另一个值,而不是t(t<1)
或t(t>1)
。
你可以使用
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(t<1)));
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(t>=1)));
或者您可以忽略它并在定义z
后执行:
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));
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));
z= [x,y];
z=z+10*randn(size(t));
那些应该都有效。
另一个小错误是你&#34;删除&#34;您的t==1
您必须使用x中的t(t<=1)
或y定义中的t(t>=1)
或z和t的维度相同