我很惊讶为什么以下代码不起作用
function [ x ] = generate2(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
q=randn(500,1);
wn = randn(length(t),1); %zero mean variance 1
x = 20.*sin(2.*pi.*f1.*t+q) + 30.*cos(2.*pi.*f2.*t+q) + A3.*wn;
%[pks,locs] = findpeaks(x);
plot(x);
end
当我运行以下命令时
>> sample1=generate2(3,500,1);
它给了我以下错误
Undefined function 'generate2' for input arguments of type 'double'.
我无法理解什么是问题?
我已修复它,但现在还有另一个问题
使用+
时出错 矩阵尺寸必须一致。
generate2出错(第8行) x = 20. * sin(2. * pi。* f1。* t + q)+ 30. * cos(2. * pi。* f2。* t + q)+ A3。* wn;
答案 0 :(得分:1)
尝试替换
q = randn(500,1);
带
q = randn( size( t ) );
为均匀分布,请使用
q = rand( size( t ) );
答案 1 :(得分:0)
我会回答我的问题,因为我不想浪费你的时间,更正后的代码正在关注
function [ x ] = generate2(N,m,A3)
f1 = 100;
f2 = 200;
T = 1./f1;
t = (0:(N*T/m):(N*T))'; %'
q=randn(501,1);
wn = randn(length(t),1); %zero mean variance 1
x = 20.*sin(2.*pi.*f1.*t+q) + 30.*cos(2.*pi.*f2.*t+q) + A3.*wn;
%[pks,locs] = findpeaks(x);
plot(x);
end