-1

我很惊讶为什么下面的代码不起作用

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;

4

2 回答 2

1

尝试更换

q = randn(500,1);

q = randn( size( t ) );

编辑:

对于均匀分布,使用

q = rand( size( t ) );   
于 2013-05-13T14:51:06.790 回答
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
于 2013-05-13T14:50:26.747 回答