matlab-信号与系统

常用函数注意点

阶跃函数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=1x=1x = − 1 x=-1x=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取值间隔的大小​


版权声明:本文为qq_43600632原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。