10.90.80.70.60.50.40.30.20.10-3-2-10123⑵ 离散信号的MATLAB表示 ① 指数序列
指数序列Aak可用MATLAB中的数组幂运算a.?k实现。 【例6】 衰减指数序列的MATLAB表示如下:(取A?1,a??0.6) % program exa_6.m, exponential sequence k=0:10;A=1;a=-0.6; fk=A*a.^k; stem(k,fk)
10.80.60.40.20-0.2-0.4-0.6012345678910② 正弦序列
正弦序列的MATLAB表示与连续信号相同,只是用stem(k,f)画出序列的波形。 【例7】 正弦序列sin(?0k)的MATLAB实现如下:(取?0??/6)
5
% program exa_7.m, discrete-time sinusoidal signal k=0:39;
fk=sin(pi/6*k); stem(k,fk)
10.80.60.40.20-0.2-0.4-0.6-0.8-10510152025303540③ 单位脉冲序列
单位脉冲序列可借助MATLAB中的零矩阵函数zeros表示。函数zeros(1,N)产生一个由N个零组成的列向量。
【例8】 有限区间的单位脉冲序列?[k]的MATLAB实现如下:(取区间:?1010)
% program exa_8.m, delta sequence
k=-10:10;
delta=[zeros(1,10),1,zeros(1,10)]; % 或者: delta=[(k-0)==0]; stem(k,delta)
10.90.80.70.60.50.40.30.20.10-10-8-6-4-20246810④ 单位阶跃序列
单位阶跃序列可借助MATLAB中的单位矩阵函数ones表示。函数ones(1,N)产
6
生一个由N个1组成的列向量。
【例9】 有限区间的单位阶跃序列u[k]的MATLAB实现如下:(取区间:?1010)
% program exa_9.m, unit step sequence
k=-10:10;
uk=[zeros(1,10),ones(1,11)]; % 或者: uk=[k>=0]; stem(k,uk)
3.实验内容
⑴ 运行以上九个例子程序,掌握一些常用基本信号的特点及其MATLAB实现方法;改变有关参数,进一步观察信号波形的变化。 ⑵ 在 k?[?10:10] 范围内产生并画出以下信号:
a) f1[k]??[k]; b) f2[k]??[k+2]; c) f3[k]??[k-4];
d) f4[k]?2?[k+2]??[k-4]。
⑶ 在 k?[0:31]范围内产生并画出以下信号:
a) f1[k]?sin??4k?cos??4k?; b) f2[k]?cos2??4k?; c) f3[k]?sin??4k?cos??8k?。
请问这三个信号的基波周期分别是多少?
10.90.80.70.60.50.40.30.20.10-10-8-6-4-202468107
实验二 信号的基本运算
1.实验目的
? 学会使用MATLAB完成信号的一些基本运算;
? 了解复杂信号由基本信号通过尺度变换、翻转、平移、相加、相乘、差
分、求和、微分及积分等运算来表达的方法;
? 进一步熟悉MATLAB的基本操作与编程,掌握其在信号分析中的运用特
点与使用方式。
2.实验原理
⑴ 信号的尺度变换、翻转、平移
信号的尺度变换、翻转、平移运算,实际上是函数自变量的运算。在信号的尺度变换f(at)和f[Mk]中,函数的自变量乘以一个常数,在MATLAB中可用算术运算符“﹡”来实现。在信号翻转f(?t)和f[?k]运算中,函数的自变量乘以一个负号,在MATLAB中可以直接用负号“-”写出。翻转运算在MATLAB中还可以利用fliplr(f)函数实现,而翻转后信号的坐标则可由?fliplr(k)得到。在信号时移f(t?t0)和f[k?k0]运算中,函数自变量加、减一个常数,在MATLAB中可用算术运算符“+”或“-”来实现。
【例10】 对图示三角波f(t),试利用MATLAB画出f(2t)和f(2?2t)的波形。
10.90.80.70.60.50.40.30.20.10-3-2-101238
解:实现f(2t)和f(2?2t)的MATLAB程序如下:
% program exa_10.m, Changed triangular pulse signal t=-3:0.001:3;
ft1=tripuls(2*t,4,0.5); subplot(2,1,1) plot(t,ft1) title('f(2t)')
ft2=tripuls((2-2*t),4,0.5); subplot(2,1,2) plot(t,ft2)
title('f(2-2t)')
程序运行结果如下图所示。
1
0.8
0.6 0.4 0.2
0-3-2
1
0.5
0 -3-2
⑵ 离散序列的差分与求和
离散序列的差分?f[k]?f[k]?f[k?1],在MATLAB中用diff函数来实现,其调用格式为:
y?diff(f)
f(2t)-10f(2-2t)123-10123离散序列的求和?f[k]与信号相加运算不同,求和运算是把k1和k2之间的所有
k?k1k2样本f[k]加起来,在MATLAB中用sum函数来实现,其调用格式为:
9