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
我正在尝试使用 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