【问题标题】:Incorrect plotting of ramp sequence in MatlabMatlab中斜坡序列的绘制不正确
【发布时间】:2020-02-01 18:30:13
【问题描述】:

我正在尝试使用 Matlab 在区间 [-10, 10] 内绘制离散的 ramp sequence

这是我的代码:

function Ramp()
   rampseq(-10, 10);
end

function rampseq (n1, n2)
    n = (n1:1:n2);
    stem (n, pw(n));
end

function y = pw(n)
    if (n < 0)
        y = 0;
        return;
    else
        y = n;
        return;
    end
end

我在pw(n) 函数(“分段”的缩写形式)中定义了序列的行为。请注意,如果n &lt; 0,则输出应为0,否则如果n &gt;= 0,则输出应为n 本身。然而,情节竟然是:

这不是斜坡序列,因为在 n &lt; 0 时 Y 值 不是 0,这与 pw(n) 函数中定义的行为相反。我哪里错了? if 语句是否因某种原因被跳过?命令窗口不显示任何错误。

【问题讨论】:

    标签: matlab signal-processing


    【解决方案1】:

    您将整个向量 n 传递给 pw() 函数。但是,pw() 函数随后会将 n 与 0(这是一个标量)进行比较。

    您可以调整 pw() 函数以对矢量输入进行操作,如下所示:

    function y = pw(n)
        y = n;
        y(n < 0) = 0;
    end
    

    【讨论】:

    • 谢谢。你能解释一下它是如何在向量输入上工作的吗? y = ny(n &lt; 0) = 0 的声明是做什么的? n 在这种情况下不也是一个向量吗?
    • y = n; 创建一个与n 相同的向量。然后n &lt; 0 部分创建一个与n 大小相同的逻辑(布尔)向量,其值为true,其中n 为负数,false 其中n 为非负数。 Matlab 允许你使用这个逻辑向量来索引向量y。因此,y(n &lt; 0) = 0; 部分将值零分配给y 的所有负数元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    相关资源
    最近更新 更多