常用函数注意点
阶跃函数u(x)
clc;clear;
x=0:100;
%y=sign(x);
f=@(x)sign(x);
结果是在x=0处从-1跳变到1
单位阶跃函数
clc;clear;
x=0:100;
%y=heaviside(x);
f=@(x)heaviside(x);
结果是在x=0处从0跳变到1
狄拉克函数(单位冲激信号
clc;clear;
x=0:100;
%y=dirac(x);
f=@(x)dirac(x);
disp(['dirac函数在x=0处的值为:' num2str(dirac(0))]);
disp(['dirac函数在x不为0处的值为:' num2str(dirac(1))]);
f_int=integral(f,-Inf,Inf);
disp(['dirac函数的积分为:' num2str(f_int)]);
结果是在x=0处函数值为Inf,在其他点为0,函数从 − ∞ -\infty −∞到 ∞ \infty ∞积分值为0
冲激函数
clc;clear;
x=0:100;
%y=sign(dirac(x));
f=@(x)sign(dirac(x));
disp(['冲激函数在x=0处的值为:' num2str(sign(dirac(0)))]);
disp(['冲激函数在x不为0处的值为:' num2str(sign(dirac(1)))]);
f_int=integral(f,-Inf,Inf);
disp(['冲激函数的积分为:' num2str(f_int)]);
结果是在x=0处函数值为1,在其他点为0,函数从 − ∞ -\infty −∞到 ∞ \infty ∞积分值为0
冲激函数与dirac函数的区别
冲激函数的图形是三角形,x的取值间隔越小,三角形底边越窄
dirac函数的图形是看不见图形,只能在x=0点处看到取Inf值点,x的取值间隔越小,取值点宽度越小
冲激函数进阶
正确plot方法:
- 平时我们创造冲激函数就是
sign(dirac(x))
即可,重点在于想实现dirac(x+1)-dirac(x-1)
并且plot
出来,但是单纯的dirac(x)
只会得到函数值为Inf的结果,因此,当我们把多个dirac函数与其他函数相乘时,可以采用(设有函数 f ( x ) f(x) f(x)句柄)sign(f.*(dirac(x+1)-dirac(x-1)))
,然后plot
即可得到可视的图像结果,如下图
测试方法采用:
- 句柄函数不能看到具体值,而直接赋值
y=sign(f.*(dirac(x+1)-dirac(x-1)))
即可在结果中看到函数值,该写法可看到0和1
错误的plot方法:
- 若改变一种思路,我们把冲激函数先写成
f0=@(x)sign(dirac(x))
,然后写成f.*(f0(x+1)-f0(x-1))
,那么我们再去函数值中观察,即可看见0和Inf两种值,因此plot
出来看不到冲激函数的图像,只能看到在 x = 1 x=1 x=1和 x = − 1 x=-1 x=−1处的取值间隔
分段函数
例:
x=-20:0.01:20;
f=@(x)(x+1).*(x>-2&x<=-1)+(x<=0&x>-1)+2.*(x>0&x<1)+(-x+2).*(x>=1&x<2);
该分段函数分为四段,x区间分别为[-2,1],[-1,0],[0,1],[1,2],其中代码的上下区间位置无具体要求,先>再<或先<再>都可
重点在于 ≥ \geq ≥和 ≤ \leq ≤,如果只有>和<的话,分段的位置会归零,明显程度取决于x取值间隔的大小