Matlab 绘制脉冲函数
所以我是Matlab新手,必须画脉冲函数,如果n==3,则y(n)仅为1,否则为0。以下代码起作用:Matlab 绘制脉冲函数,matlab,Matlab,所以我是Matlab新手,必须画脉冲函数,如果n==3,则y(n)仅为1,否则为0。以下代码起作用: n = -5:5; f = n; % allocate f for i = 1 : length(n) f(i) = dd1(n(i)-3); end stem(n, f);
n = -5:5;
f = n; % allocate f
for i = 1 : length(n)
f(i) = dd1(n(i)-3);
end
stem(n, f);
function y = dd1(n)
y = 0;
if n == 0
y = 1;
end
end
但我觉得这太复杂了,所以我尝试了以下方法:
n = -5:5
stem(n, fo)
function y = fo(n)
y = 0
if n == 3
y=1
end
end
这是回报
Not enough input arguments.
Error in alternative>fo (line 5)
if n == 3
Error in alternative (line 2)
stem(n, fo)
我觉得我在这里遗漏了一些琐碎的东西。
如果
不是矢量操作,但需要一个布尔值(或者至少是一个可以转换为布尔值的标量)
但你可以这样做:
lg = n == 3;
这将生成一个逻辑(布尔值的MATLAB名称)数组(因为n
是一个数组而不是一个向量),如果n
等于(=
)三,则为真。所以您不需要函数,因为您可以利用MATLAB隐式处理向量和数组的能力。
(对于您的代码,它将是f=(n-3)==3
)
最后一个提示:如果你有一个状态空间系统(
ss
-object),你可以使用函数step
来获得阶跃响应作为一个绘图。但是第一个解决方案工作得很好,与第二个方法有什么区别?1)你调用函数fo(n)
,而不需要输入参数(这就是MATLAB)抱怨2)如果n==3,则不适用于数组,因为它还返回数组。事实上,如果调用fo(n)
,它将返回-0 0 0 0 0 0 0 0 0 0
。(这是一个还没有出现的错误,因为MATLAB甚至没有因为1而出现)