功能在Matlab中不起作用

时间:2013-05-13 14:32:07

标签: matlab double

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

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;

2 个答案:

答案 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