首页 文章

函数在Matlab中不起作用[关闭]

提问于
浏览
-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);

它给了我以下错误

未定义的函数'generate2'用于'double'类型的输入参数 .

我无法理解什么是问题?

我修好了,但现在还有另外一个问题

使用Matrix维度时出错必须同意 . generate2中的错误(第8行)x = 20. * sin(2. * pi . * f1 . * t q)30 . * cos(2. * pi . * f2 . * t q)A3 . * wn;

2 回答

  • 1

    尝试更换

    q = randn(500,1);
    

    q = randn( size( t ) );
    

    编辑:

    为均匀分布,使用

    q = rand( size( t ) );
    
  • 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
    

相关问题