繁体   English   中英

在 matlab 中创建离散步骤 function

[英]create discrete step function in matlab

我正在使用以下代码在 MATLAB 中创建标准离散单元步骤 function。

>> n = -5 : 5;
>> y = heaviside(n);
>> stem(n,y);

然而,这打印在此处输入图像描述 我尝试了很多不同的变体,并试图弄乱代码。 但我无法创建 function。我最好将 function 放在一个变量中,以便我可以进行更复杂的信号处理。 关于我做错了什么的任何想法?

这是Matlab文档中Heaveside step函数的定义。

heaviside(x)对于x <0返回值0,对于x> 0返回1,对于x = 0返回1/2。

注意该积分的结果,以查看实现是否正确:

syms x
int(exp(-x)*heaviside(x), x, -Inf, Inf)

希望这些功能对您有所帮助,您要找的是最后一个!

%% Functions

function y=us(t) % continuous time unit step function

 y=(sign(t)+1)/2;

end

function y=rect(t) % continuous time unit rectangle function

 y=us(t+0.5) - us(t-0.5);

end

function y=tri(t) % continuous time unit triangle function

 y = (t+1).*rect(t+0.5) + (-t+1).*rect(t-0.5);

end

function y=usD(n) % Discrete time unit step, n must be an integer! 

y = 1.*(n>=0);

end

请注意, heaviside是在符号库中定义的,它主要用于连续计算,例如符号积分,傅立叶变换等。 您也可以在离散设置中使用它,但是是否需要x=0的行为取决于应用程序。

创建步进函数(没有任何工具箱)的更简单方法是:

step1 = @(x) x>=0;
step2 = @(x) (sign(x)+1)/2;

figure(1);clf;
stem(-5:5,step1(-5:5)); 
hold on;
stem(-5:5,step2(-5:5),'rx'); 

而第一个在x=0处从0跳到1,而第二个则类似于heaviside

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM