大家好,又见面了,我是你们的朋友全栈君。
1.正弦序列
离散正弦序列的MATLAB表示与连续信号类似,只不过是用stem函数而不是用plot函数来画出序列的波形。下面就是正弦序列的MATLAB源程序。
代码语言:javascript复制%正弦序列实现程序k=0:39;fk=sin(pi/6*k);stem(k,fk)
2.指数序列
离散指数序列的一般形式为,可用MATLAB中的数组幂运算(即点幂运算)c*来实现。下面为用MATLAB编写绘制离散时间实指数序列波形的函数。
代码语言:javascript复制function dszsu(c,a,k1,k2)%c:指数序列的幅度%a:指数序列的底数%k1:绘制序列的起始序号%k2:绘制序列的终止序号k=k1:k2;x=c*(a.^k);stem(k,x,'filled')hold onplot([k1,k2],[0,0])hold off
利用上述函数,实现实指数波形MATLAB程序如下(其中值分别为)。
代码语言:javascript复制%离散时间实指数序列实现程序subplot 221;dszsu(1,5/4,0,20);xlabel('k');title('f1[k]');subplot 222dszsu(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函数。
代码语言:javascript复制function[]=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程序如下(其中虚指数分别为)
代码语言:javascript复制%离散时间虚指数实现程序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程序如下。
代码语言:javascript复制%复指数序列实现程序(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程序表示
代码语言:javascript复制% 单位抽样序列实现程序k=-30:30;delta=[zeros(1,30),1,zeros(1,30)];stem(k,delta)
4.单位阶跃序列
可以通过借助MATLAB中的单位矩阵函数ones表示。单位矩阵ones(1,N)产生一个由N个1组成的列向量,对于有限区间的可以通过以下MATLAB程序表示
代码语言:javascript复制% 单位阶跃序列实现程序k=-30:30;uk=[zeros(1,30),ones(1,31)];stem(k,uk)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127718.html原文链接:https://javaforall.cn