Matlab中正弦函数的总和

时间:2015-04-25 22:50:52

标签: matlab

我必须使用以下定义创建一个函数:

function [ s1,s2,sums ] = sines( pts,amp,f1,f2 )

输出参数s1是行向量,其长度(元素数)等于pts。 s1的元素是正弦函数的值,当给出等间距的参数时,从零开始并延伸到正弦的f1周期。正弦波的幅度等于amp。矢量s2与s1相同,除了s2包含f2周期。向量和是s1和s2的总和。如果省略f2,则应将其设置为比f1大5%的值。如果f1也被省略,那么它应该设置为100.如果没有提供放大器,那么它应该默认为1.最后,如果省略了pts,那么它应该设置为1000.我已经完成了以下操作:

function [ s1,s2,sums ] = sines( pts,amp,f1,f2 )

if nargin == 3
    f2  = f1 + (f1*0.05);    
elseif nargin == 2
    f1  = 100;
    f2  = f1 + (f1*0.05);    
elseif nargin == 1
    amp = 1;
    f1  = 100;
    f2  = f1 + (f1*0.05);
elseif nargin == 0
    pts = 1000;
    amp = 1;
    f1  = 100;
    f2  = f1 + (f1*0.05);
end

t = 0:pts-1;
s1   = amp * sin( 2*pi*f1.*t );
s2   = amp * sin( 2*pi*f2.*t );
sums = s1 + s2;

end

结果看起来应该像频率调制正弦函数,但是当我绘制sums它看起来不像正弦函数时,它看起来更像锯齿函数,非常尖锐。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您忘记将时间步长t标准化为0-1。要分别获得f1f2的{​​{1}}和s1个句点

s2