实验三信号变换及其MATLAB实现一、实验目的1.练习利用matlab6.5中的命令或程序分析信号频谱。2.进一步练习 M-File的建立、保存、调用。3.加深对几种傅里叶变换的理解。二、实验原理与方法连续时间信号傅里叶变换(FT): 离散时间信号傅里叶变换(DTFT):离散傅里叶变换(DFT):快速傅里叶变换(FFT):三、实验内容及步骤数学函数:1 、mod;2、length;3、sin其他函数:fft相关函数复杂语句的理解-?自己写出完成复杂功能的语句要求 1.连续时间信号傅里叶变换分析:例:分析信号x(t)=u(t)-u(t-1)的频谱。r=0.005;t=-2:r:2;r t=[t>0]-[t-1>0];k=-10:0.005:10;w=pik;Rjw=rtexp(-jt‘w)r; %(给出这之前语句的解释)R=abs(Rjw);ANGR=angle(Rjw);subplot(3,1,1);plo t(t,rt);text(2.2,0,''t'');ylabel(''r(t)=u(t)-u(t-1)'');title(''An alogSignal'');subplot(3,1,2);plot(w/pi,R);text(10.5,0,''w'');yl abel(''|Rt(jw)|'');title(''Continuous-timeFourierTransform-Magni tudePart'');subplot(3,1,3);plot(w/pi,ANGR);text(10.5,-4,''w'') ;ylabel(''ANGRt(jw)'');title(''Continuous-timeFourierTransform -AnglePart'');2.离散时间信号傅里叶变换分析:例:分析信号x(n)=u(n)-u(n-n0)的频谱。n0=4 或6或8。n0=4;%调整n0=6或8或其他值,分析并比较最后结果N=256;n=0:N-1;k=-2:0.001: 2;w=pik;%w=[-2pi,2pi]x=[ns(X);phaX=angle(X);subplot(2,2,1);plot(w/pi,magX);gridxlabe l(''Frequencyinpiunits'');ylabel(''|X(ejw)|'');title(''Discrete- timeFourierTransform---Magnitude'');subplot(2,2,3);plot(w/pi,p haX/pi);gridon;xlabel(''Frequencyinpiunits'');ylabel(''radians /pi'');title(''Discrete-timeFourierTransform---AnglePart'');3 .离散傅里叶变换分析:例:分析信号x(n)=u(n)-u(n-n0)的频谱。n0=4或6或8。n0=4;%调整n0=6或8 或其他值,分析并比较最后结果N=16;%调整N=16或32或其他值,分析并比较最后结果n=0:N-1;k=0:N-1; w=2pi/Nk;x=[nangle(X);subplot(2,2,2);stem(k,magX,''b'');gridxlabel(''Frequen cyinpiunits'');ylabel(''|X(k)|'');title(''DiscreteFourierTran sform---Magnitude'');subplot(2,2,4);stem(k,phaX/pi,''r'');gridon ;xlabel(''Frequencyink=pi/Nunits'');ylabel(''radians/pi'');tit le(''DiscreteFourierTransform---AnglePart'');function[Xk]=d ft(xn,N)%ComputesDiscreteFourierTransform%---------------- -------------------%[Xk]=dft(xn,N)%Xk=DFTcoeff.arrayov er0<=k<=N-1%xn=N-pointfinite-durationsequence%N=L engthofDFT%n=[0:1:N-1];%rowvectorforn k=[0:1:N-1];%rowvecorforkWN=exp(-j2pi /N);%Wnfactornk=n''k;%createsaNbyN matrixofnkvaluesWNnk=WN.^nk;%DFTmatrixXk=xn WNnk;%rowvectorforDFTcoefficients%计算离散傅里叶变换函数 dft():%计算离散傅里叶级数函数dfs():function[Xk]=dfs(xn,N)%ComputesDi screteFourierSeriesCoefficients%---------------------------- -----------------%[Xk]=dfs(xn,N)%Xk=DFScoeff.arrayover 0<=k<=N-1%xn=Oneperiodofperiodicsignalover0<=n< =N-1%N=Fundamentalperiodofxn%n=[0:1:N-1]; %rowvectorfornk=[0:1:N-1];%rowvecor forkWN=exp(-j2pi/N);%Wnfactornk=n''k; %createsaNbyNmatrixofnkvaluesWNnk=WN.^nk; %DFSmatrixXk=xnWNnk;%rowvectorforDFScoe fficients%计算序列的循环移位函数cirshftt():functiony=cirshftt(x,m,N)% CircularshiftofmsampleswrtsizeNinsequencex:(timedomai n)%------------------------------------------------------------ -------%[y]=cirshftt(x,m,N)%y=outputsequencecontaining thecircularshift%x=inputsequenceoflength<=N%m=samp leshift%N=sizeofcircularbuffer%Method:y(n)=x((n-m) modN)%Checkforlengthofxiflength(x)>Nerror(''N mustbe>=thelengthofx'')endx=[xzeros(1,N-length(x))];n =[0:1:N-1];n=mod(n-m,N);y=x(n+1);%计算序列的循环卷积函数circonvt(): functiony=circonvt(x1,x2,N)%N-pointcircularconvolutionbet weenx1andx2:(time-domain)%--------------------------------- ----------------------------%[y]=circonvt(x1,x2,N)%y=out putsequencecontainingthecircularconvolution%x1=inputseq uenceoflengthN1<=N%x2=inputsequenceoflengthN2<=N% N=sizeofcircularbuffer%Method:y(n)=sum(x1(m)x2((n- m)modN))%Checkforlengthofx1iflength(x1)>Nerr or(''Nmustbe>=thelengthofx1'')end%Checkforlengthofx2 iflength(x2)>Nerror(''Nmustbe>=thelengthofx2'') endx1=[x1zeros(1,N-length(x1))];x2=[x2zeros(1,N-length(x2))]; m=[0:1:N-1];x2=x2(mod(-m,N)+1);H=zeros(N,N);forn=1:1 :NH(n,:)=cirshftt(x2,n-1,N);endy=x1H'';4.快速傅里叶变换分析 信号频谱例:利用FFT分析信号x(t)=0.5sin(2πf1t)+2sin(2πf2t)的频谱。其中f1=15Hz,f2=4 0Hz。fs=100;%调整fs=40或60或160或其他值,分析并比较最后结果N=256;%调整N=32或1024 或其他值,分析并比较最后结果n=0:N;t=n/fs;x=0.5sin(2pi15t)+2sin(2pi40 t);%什么情况下能得到单一谱线%调整x=0.5sin(2pi15t)+2sin(2pi40t)+ran dn(1,N);分析并比较最后结果y=fft(x,N);mag=abs(y);f=(0:length(y)-1)''fs/l ength(y);%f=kfs/Nsubplot(221);plot(f,mag);xlabel(''Frequence(Hz )'');ylabel(''Magnitude'');title(''N=256'');grid;subplot(223);plot(f (1:N/2),mag(1:N/2));xlabel(''Frequence(Hz)'');ylabel(''Magnitude'');title(''N=256'');grid;5.分析信号x(n)=(-0.5)n,-10
|
|