资源描述:
《matlab在信号处理中的应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Ø基本信号的MATLAB实现:1.函数:x=[zeros(1,10),1,zeros(1,10)];stem(x);%注:若是产生序列可以用stem(x)代替stem(n,x);当然通过改变为值为1时的序列下标,实现函数的时移;2.函数:n=-20:20;t=(n>=0);stem(t);%通过改变(n>=i)来实现函数的时移;3.单位斜坡函数:n=-20:20;t=n.*(n>0);stem(t);%通过改变n.*(n>i)或(n-i).*(n>i)来实现不同的单位斜坡函数时移;4.复指数序列:>>n=-10:10;t=0.1+j*0.3;x=exp(t*n);>>subplo
2、t(221);stem(real(x));>>subplot(222);stem(imag(x));>>subplot(223);stem(abs(x));>>subplot(224);stem((180/pi*angle(x)));5.随机序列:使用rand(1,n)和randn(1,n)产生随机序列;6.MATLAB信号工具箱还提供了一些其他的常用信号,如:SQUARE,SAWTOOTH,SINC,DIRIC,DIRICHLET,RECTPULS和PULSTRAN,具体用法参考help文件。ØMATLAB常用函数:real(x):返回复数的实部;imag(x):返回复数的虚部
3、;abs(x):返回复数的模;angle(x):返回复数的相角;rand(1,n):返回长度为n的[0,1]上均匀分布的随机序列;randn(1,n):返回长度为n的均值为0,方差为1的高斯随机序列,即白噪声序列;Ø信号的基本运算:1.信号相加:function[y,n]=sig_add(x1,n1,x2,n2)%Implementsy(n)=x1(n)+x2(n);%x1,x2:序列%n1,n2:序列的起始/终止下标n=min(min(n1),min(n2)):max(max(n1),max(n2));y1=zeros(1,length(n));y2=y1;y1(find((n
4、>=min(n1))&(n<=max(n1))==1))=x1;y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;y=y1+y2;2.信号相乘:function[y,n]=sig_mult(x1,n1,x2,n2)%Implementsy(n)=x1(n)*x2(n);%x1,x2:序列%n1,n2:序列的起始/终止下标n=min(min(n1),min(n2)):max(max(n1),max(n2));y1=zeros(1,length(n));y2=y1;y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;y
5、2(find((n>=min(n2))&(n<=max(n2))==1))=x2;y=y1.*y2;1.信号移位:function[y,n]=sig_shift(x,m,n0)%Implementsy(m+k)=x(n)n=m+n0;y=x;2.序列折叠:function[y,n]=sig_fold(x,m)%Implementsy(n)=x(-n)y=fliplr(x);n=-fliplr(n)3.序列奇偶性:function[xeven,xodd,m]=sig_even_odd(x,n)%Realsignaldecompositionintoevenandoddpartsif
6、(imag(x)~=0)error('xisnotarealsequence');endm=-fliplr(n);m1=min([m,n]);m2=max([m,n]);m=m1:m2;nm=n(1)-m(1);n1=1:length(n);x1=zeros(1,length(m));x1(n1+nm)=x;x=x1;xeven=0.5*(x+fliplr(x));xodd=0.5*(x-fliplr(x));下面的用于求奇偶分量的函数的特点在于:它根据输入的序列的中点为对称中心而求奇偶分量:function[xeven,xodd]=circevod(x)ifany(imag(x
7、)~=0)error('Thesequenceisnotreal.')endN=length(x);n=0:(N-1);xeven=0.5*(x+x(sigmod(-n,N)+1));xodd=0.5*(x-x(sigmod(-n,N)+1));例:n=-5:17;>>x=10*0.8.^n;;>>[xeven,xodd]=circevod(x);>>subplot(311),stem(x);>>subplot(312),stem(xeven);>>subplot(313),st