matlab中的stepfun函数和heaviside函数

无法识别stepfun函数

背景

今天上课时有用到stepfun函数,我带去了自己的笔记本发现但发现笔记本上无法运行这个函数(笔记本上matlab是R2022a版),然而教学用的电脑上可以运行(版本是R2014)。当时上网查找了一番也没找到个具体解释。

转折

我也不知道是什么原因导致的。因为当时事先我已经安装了Signal Processing Toolbox,而且当时有重启尝试,结果都没用。但奇怪的是我晚上重新写报告时,发现笔记本上可以正常使用stepfun函数了。。。
考虑到当时当时上网查找解决方法时又看到别人也在发帖求助,明显无法识别stepfun函数的情况不是个例,所以我把解决办法放在下面。

解决方案

1、手动增添stepfun函数

自行添加stepfun到函数库,之后就可以直接调用了。
在这里插入图片描述

f=stepfun(T,T0)

单位阶跃函数,输入参数T为单调递增的向量,T0指定阶跃点,返回值f是与T长度相同的向量。
其函数代码如下:

function y = stepfun(t,to)
%STEPFUN  Unit step function.

%   STEPFUN(T,T0), where T is a monotonically increasing vector,
%   returns a vector the same length as T with zeros where T < T0
%   and ones where T >= T0.

%   J.N. Little 6-3-87
%   Copyright 1986-2002 The MathWorks, Inc. 

[m,n] = size(t);
y = zeros(m,n);
i = find(t>=to);
if isempty(i)
    return
end
i = i(1);
if m == 1
    y(i:n) = ones(1,n-i+1);
else
    y(i:m) = ones(m-i+1,1);
end

2、用heaviside函数替代

H = heaviside(x)

返回值H是x处的heaviside阶跃函数(即单位阶跃函数)。但heaviside函数是一个不连续函数,当x < 0时返回0,当x = 0时返回1/2,当x > 0时返回1。
当x是一个递增的向量时,就可与stepfun函数作替换。
对比如下:

stepfun函数:

t=-5:0.01:5;
t1=0;t2=1;
u1=stepfun(t,t1);
u2=stepfun(t,t2);
subplot(121)
hold on
plot(t,u1)
axis([-1,8,-2,5])
plot([0,0],[-2,5],'k--')
gtext('\leftarrowx=0')
hold off
subplot(122)
hold on
plot(t,u2)
axis([-1,8,-2,5])
plot([1,1],[-2,5],'k--')
gtext('\leftarrowx=1')

结果图:
在这里插入图片描述

heaviside函数:

t=-5:0.01:5;
u1=heaviside(t);
u2=heaviside(t-1);
subplot(121)
hold on
plot(t,u1)
axis([-1,8,-2,5])
plot([0,0],[-2,5],'r--')
gtext('\leftarrowx=0','color','r')
hold off
subplot(122)
hold on
plot(t,u2)
axis([-1,8,-2,5])
plot([1,1],[-2,5],'r--')
gtext('\leftarrowx=1','color','r')
hold off


结果图:
在这里插入图片描述

结语

两个函数的用法区别就只在于stepfun函数需要单独指明阶跃点,而heaviside则可以通过对自变量的改变而实现,更符合我们平时处理函数的习惯。
随着版本的更新,貌似heaviside函数使用更为普遍了?反正我是没看见网上有类似“matlab无法识别heaviside函数”的帖子。
大家天天开心,学业进步!

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MATLAB的Heaviside函数是一种特殊的函数,它在x=0处的导数为0,在x<0处的值为0,在x>0处的值为1。 用法: heaviside(x) 例如: >> heaviside(-5) ans = 0 >>heaviside(5) ans = 1 >>heaviside(0) ans = 1 你可以用它来建立信号或系统的数学模型。 ### 回答2: Heaviside函数是一种在数学和工程领域经常使用的函数,通常用于表示阶跃信号或单位阶跃函数。在MATLAB,可以使用heaviside函数进行阶跃信号的模拟和计算。 heaviside函数的定义为: heaviside(x) = 0, 如果x < 0 heaviside(x) = 0.5, 如果x = 0 heaviside(x) = 1, 如果x > 0 以下是heaviside函数的用法和示例: 1. 基本用法: 可以使用以下语法来调用heaviside函数并计算特定值的阶跃函数: y = heaviside(x) 2. 向量化计算: heaviside函数支持对向量或矩阵进行计算,可以一次对多个值进行处理,如: y = heaviside([1, 2, -3, 0]) 3. 绘制阶跃函数图像: 可以使用plot函数绘制阶跃函数的图像,如: x = -5:0.01:5; y = heaviside(x); plot(x, y) 4. 应用于信号处理: 阶跃信号在信号处理经常用于描述系统的启动或变化,heaviside函数可用于模拟和处理此类信号。可以使用heaviside函数创建启动信号或跃迁信号等。 总之,MATLAB的heaviside函数是一个用于计算阶跃函数或单位阶跃函数函数。它可以用来模拟和处理阶跃信号,在信号处理和控制系统等领域有广泛的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值