1.正弦序列
离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot函数来画出序列的波形。下面就是正弦序列的MATLAB源程序。
复制代码
1
2
3
4%正弦序列实现程序 k=0:39; fk=sin(pi/6*k); stem(k,fk)
2.指数序列
离散指数序列的一般形式为,可用MATLAB中的数组幂运算(即点幂运算)c*来实现。下面为用MATLAB编写绘制离散时间实指数序列波形的函数。
复制代码
1
2
3
4
5
6
7
8
9
10
11function dszsu(c,a,k1,k2) %c:指数序列的幅度 %a:指数序列的底数 %k1:绘制序列的起始序号 %k2:绘制序列的终止序号 k=k1:k2; x=c*(a.^k); stem(k,x,'filled') hold on plot([k1,k2],[0,0]) hold off
利用上述函数,实现实指数波形MATLAB程序如下(其中值分别为)。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17%离散时间实指数序列实现程序 subplot 221; dszsu(1,5/4,0,20); xlabel('k'); title('f1[k]'); subplot 222 dszsu(1,3/4,0,20); xlabel('k'); title('f2[k]'); subplot 223; dszsu(1,-5/4,0,20); xlabel('k'); title('f3[k]'); subplot 224; dszsu(1,-3/4,0,20); xlabel('k'); title('f4[k]');
分析程序运行结果,对于离散时间实指数序列,当的绝对值大于1时,序列为随时间发散的序列,当的绝对值小于1时,序列为随时间收敛的序列。同时可见,当的值小于零时,其波形在增长或衰减的同时,还交替地改变序列值的符号。
对于离散时间虚指数序列,可用通过调用下列绘制虚指数序列时域波形的MATLAB函数。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14function[]=dxzsu(n1,n2,w) %n1:绘制波形的虚指数序列的起始时间序号 %n2:绘制波形的虚指数序列的终止时间序号 %w:虚指数序列的角频率 k=n1:n2; f=exp(i*w*k); Xr=real(f) Xi=imag(f) Xa=abs(f) Xn=angle(f) subplot(2,2,1), stem(k,Xr,'filled'),title('实部'); subplot(2,2,3), stem(k,Xi,'filled'),title('虚部'); subplot(2,2,2), stem(k,Xa,'filled'),title('模'); subplot(2,2,4), stem(k,Xn,'filled'),title('相角');
利用上述函数,实现虚指数波形MATLAB程序如下(其中虚指数分别为)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23%离散时间虚指数实现程序 figure(1); dxzsu(0,20,pi/4); figure(2); dxzsu(0,20,2); 程序运行结果如图1.21(a)、(b)所示。由图可见,只有当虚指数序列的角频率满足为有理数时,信号的实部和虚部和相角都为周期序列,否则为非周期序列。 对于复指数序列,其一般形式为 可以通过调用下面绘制复指数序列时域波形的MATLAB函数。 function dfzsu(n1,n2,r,w) %n1:绘制波形的虚指数序列的起始时间序号 %n2:绘制波形的虚指数序列的终止时间序号 %w:虚指数序列的角频率 %r: 指数序列的底数 k=n1:n2; f=(r*exp(i*w)).^k; Xr=real(f); Xi=imag(f); Xa=abs(f); Xn=angle(f); subplot(2,2,1), stem(k,Xr,'filled'),title('实部'); subplot(2,2,3), stem(k,Xi,'filled'),title('虚部'); subplot(2,2,2), stem(k,Xa,'filled'),title('模'); subplot(2,2,4), stem(k,Xn,'filled'),title('相角');
利用上述函数,实现复指数序列波形MATLAB程序如下。
复制代码
1
2
3
4
5
6
7
8
9%复指数序列实现程序(r>1) figure(1); dfzsu(0,20,1.2,pi/4); %复指数序列实现程序(0<r<1) figure(2); dfzsu(0,20,0.8,pi/4); %复指数序列实现程序(r=1) figure(3); dfzsu(0,20,1,pi/4);
当r>1时,复指数序列的实部和虚部分别为幅度按指数增长的正弦序列;当0<r<1时,复指数序列的实部和虚部分别为幅度按指数衰减的正弦序列;当r=1时,复指数序列的实部和虚部分别为等幅正弦序列。
3.单位抽样序列
可以通过借助MATLAB中的零矩阵函数zeros表示。全零矩阵zeros(1,N)产生一个由N个零组成的列向量,对于有限区间的可以通过以下MATLAB程序表示
复制代码
1
2
3
4% 单位抽样序列实现程序 k=-30:30; delta=[zeros(1,30),1,zeros(1,30)]; stem(k,delta)
4.单位阶跃序列
可以通过借助MATLAB中的单位矩阵函数ones表示。单位矩阵ones(1,N)产生一个由N个1组成的列向量,对于有限区间的可以通过以下MATLAB程序表示
复制代码
1
2
3
4% 单位阶跃序列实现程序 k=-30:30; uk=[zeros(1,30),ones(1,31)]; stem(k,uk)
最后
以上就是正直毛巾最近收集整理的关于数字信号处理实验一(离散时间信号的MATLAB实现)的全部内容,更多相关数字信号处理实验一(离散时间信号内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复