常用信号的MATLAB表示
- 格式:doc
- 大小:55.00 KB
- 文档页数:7
5 常用信号的MATLAB表示
5、1单位冲激函数、单位冲激序列
示例7:
t = -5:0、01:5;
y = (t==0);
subplot(121);
plot(t, y, 'r');
n = -5:5;
x = (n==0);
subplot(122);
stem(n, x);
图5
运行结果如图5所示。
程序说明:
(1)由n = -5:5得到一个1×11数组n;而在x = (n==0)中,n==0就是一个向量运算,即向量n中的每一个元素与0比较就是否相等,其比较结果0或1放在x中。这
样得到的向量x也就是1×11数组,且正好就就是单位冲激序列。
(2)在MATLAB中,任何向量x的下标就是从1开始的,不能取零或负值,而x(n)中的时间变量n则不此受限制。因此向量x的下标与时间变量n就是两个概念,如本例中向量x(n)的下标就是从1到11,而时间变量n就是从-5到5。所以必须用一个与向量x等长的定位时间变量n,以及向量x,才能完整地表示序列x(n)。在信号的表示与运算中,这一点请务必注意;只有当序列x(n)的时间变量正好就是从1开始时,才能省去时间变量n,因为此时向量的下标与时间变量相同。
(3)单位冲激函数的实现方法实际上与单位冲激序列就是完全相同的,都就是用序列表示。只不过表示连续时间信号的序列中两相邻元素所对应的时间间
隔更小,如本例中t的间隔为0、01,而表示离散时间信号的序列中两相邻元素所对应的时间间隔一般为1。
由于单位冲激序列在信号与系统中经常使用,我们专门编制一个函数文件delta、m,在后面的实验部分直接调用该函数即可产生需要的波形。
% delta、m
function [x, n] = delta(n1,n2,k)
% 产生冲激序列δ(n-k),其中n1<=n<=n 2, n1<=k<=n2
if nargin ~=3
disp('输入不正确,输入参数要有三个!');
return;
elseif ((k
error('输入不正确,输入参数要应满足n1<=k<=n2!')
end
n = n1:n2;
x = ((n-k)==0);
5、2单位阶跃函数、单位阶跃序列
只要将前面冲激函数(示例7)中的关系运算“==”改为“>=”,就可得到单位阶跃函数、单位冲激序列,如图6所示。
图6
我们编制了函数文件stepseq、m来生成单位阶跃序列。
function [x, n] = stepseq(n1,n2,n0)
% 产生序列u(n-n0),其中n1<=n<=n 2, n1<=n0<=n2
if nargin ~=3
disp('输入不正确,输入参数要有三个!');
return;
elseif ((n0
error('输入不正确,输入参数要应满足n1<=k<=n2!') end
n = n1:n2;
x = ((n-n0)>=0);
示例8:绘图表示
(1) 门函数;
(2) 序列。
t = -3 :0、05: 3;
z1 = ((t+1) >= 0);
z2 = ((t-1) >= 0);
g = z1 - z2; % 门函数
figure;
subplot(221)
plot(t,g,'r');
axis([-3 3 0 1、1])
x1 = stepseq(-5,10,-3); % 调用函数stepseq
x2 = stepseq(-5,10,5); % 调用函数stepseq
x = x1 - x2;
n = -5:10;
subplot(222)
stem(n,x);
axis([-5,10,0,1、1])
运行结果如图7所示。
图7
5、3其她典型的信号
1.实指数信号
其MATLAB实现为:n = n1: n2; x = a、^n;
1.复指数信号
其MATLAB实现为:n = n1: n2; x = exp(sigma+jw)*n;
1.正(余)弦信号
其MATLAB实现为:n = n1: n2; x = cos(w*n+sita)
5、4工具箱中的信号产生函数
利用MATLAB信号处理工具箱提供的一些函数,可以很方便地产生三角波、方波等函数波形。
1.周期性三角波或锯齿波函数sawtooth
调用格式为:x =sawtooth(t, width)
功能:产生一个周期为2π、幅度在-1到+1之间的周期性三角波信号。其中width 表示最大幅度出现的位置:即在一个周期内,信号从t=0到width×2π时函数值从-1到+1线性增加,而从width×2π到2π又就是从+1到-1线性下降。width取值在0 ~ 1之间。
若x =sawtooth(Ωt, width),则对应的周期为2π/Ω。
示例9:产生周期为0、2的三角波,width取值分别为0、1、0、5。
td = 1/100000; % td为时间间隔
t = 0 : td : 1;
x1 = sawtooth(2*pi*5*t,0);
x2 = sawtooth(2*pi*5*t,1);
x3 = sawtooth(2*pi*5*t,0、5);
subplot(311); plot(t,x1);
subplot(312); plot(t,x2);
subplot(313); plot(t,x3);
运行结果如图8所示。