Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 绘制脉冲函数_Matlab - Fatal编程技术网

Matlab 绘制脉冲函数

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);

所以我是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);                     
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而出现)