Matlab 中的斜坡序列绘制不正确

Incorrect plotting of ramp sequence in Matlab

我正在尝试使用 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) 函数('piecewise' 的缩写)中定义了序列的行为。请注意,如果 n < 0,输出应该是 0,否则如果 n >= 0,输出应该是 n 本身。然而剧情却是:

这不是斜坡序列,因为当 n < 0 时 Y 值 不是 0,这与 [=] 中定义的行为相反12=] 函数。我哪里错了? if 语句是否由于某种原因被跳过?命令 Window 没有显示任何错误。

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

您可以调整 pw() 函数以像这样对向量输入进行操作:

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