【问题标题】:Sum of sine functions in MatlabMatlab中的正弦函数之和
【发布时间】:2015-04-25 22:50:52
【问题描述】:

我必须创建一个具有以下定义的函数:

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。如果未提供 amp,则应默认为 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 时,它看起来不像一个正弦函数,它看起来更像一个锯齿函数,非常尖锐。我做错了什么?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您忘记将您的时间步长t 标准化为 0-1 之间。要分别为 s1s2 获取 f1f2 句点,您应该拥有

    t = (0:pts-1)/(pts-1);
    

    【讨论】:

    • 愚蠢的错误!非常感谢!
    • ... 或者干脆t = linspace(0, 1, pts);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多