数字信号处理讲义
n=[0:1:99];
x=cos(0.48*pi*n)+cos(0.52*pi*n);
subplot(2,1,1);stem(n,x);title('signal x(n),0<=n<=99');xlabel('n') axis([0,100,-2.5,2.5])
X=fft(x);magX=abs(X(1:1:51)); k=0:1:50;w=2*pi/100*k;
subplot(2,1,2);stem(w/pi,magX);title('DTFT Magnitude');
xlabel('frequency in pi units') axis([0,1,0,60])
执行后可得到如下所示的图形。图1中0≤n≤10时的序列x(n)和相应的DFT X(k),从图中几乎无法看出有关信号频谱的信息。图2是将x(n)补90个零时的x(n)和相应的X(k),显然,这时的谱线相当密,故称为高密度频谱图,但从图中很难看出信号的频谱部分。图3为加长取样数据长度,0≤n≤100,这时可很清晰地看出信号的频谱成分,这称为高分辩频谱。
signal x(n),0<=n<=9210-1-20123456789nSamples of DTFT Magnitude105000.10.20.30.40.50.6frequency in pi units0.70.80.91
图 1
32
数字信号处理讲义
signal x(n),0<=n<=9+90 zeros210-1-20108642000.10.20.30.40.50.6frequency in pi units0.70.80.91102030405060nDTFT Magnitude708090100 图 2
signal x(n),0<=n<=99210-1-2060102030405060nDTFT Magnitude7080901004020000.10.20.30.40.50.6frequency in pi units0.70.80.91 图 3
33
数字信号处理讲义
附程序:
1. 离散傅立叶变换
function [Xk]=dft(xn,N)
%Computes Discrete Fourier TransForm %--------------------- %[Xk]=dft(xn,N) %
n=[0:1:N-1]; k=[0:1:N-1];
Wn=exp(-j*2*pi/N); nk=n'*k;
Wnnk=Wn.^nk; Xk=xn*Wnnk;
2. 离散傅立叶反变换
function [xn]=idft(Xk,N)
%Computes Inverse Discrete Fourier Transform %--------------- %[xn]=idft(Xk,N) %
N=[0:1:N-1]; k=[0:1:N-1];
WN=exp(-j*2*pi/N); nk=n'*k;
WNnk=WN.^(-nk); xn=(Xk*WNnk)/N;
3. 取余运算
function m=sigmod(n,N)
%Computes m=(n mod N) index %----------------- %m=m(n,N)
34
数字信号处理讲义
m=rem(n,N); m=m+N;
m=rem(m,N);
4. 循环移位运算
function y=cirshift(x,m,N)
%Circular shift of m samples with size N in sequence x:(time domain)
%-------------------- %[y]=cirshift(x,m,N)
%x=input sequence of length <= N %m=sample shift
%N=size of circular buffer %Method:y(n)=x((n-m)mod N)
if length(x)>N
error('N must be >= the length of x') end
x=[x zeros(1,N-length(x))]; n=[0:1:N-1]; n=mod(n-m,N); y=x(n+1);
5. 循环卷积运算
function y=circonv(x1,x2,N)
%N-point circular convolution between x1 and x2:(time-domain) %------------------ %[y]=circonv(x1,x2,N)
%x1=input sequence of length N1<=N %x2=input sequence of length N2<=N %N=size of circular buffer
%Method : y(n)=sum(x1(m)*x2((n-m)mod N)) if length(x1)>N
error('N must be >= the length of x1') end
35
数字信号处理讲义
x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1];
x2=x2(mod(-m,N)+1); H=zeros(N,N); for n=1:1:N
H(n,:)=cirshift(x2,n-1,N); end
y=x1*H'
实验报告要求
1. 实验报告包括目的、要求、内容、步骤、结果、总结,形成完整实验报告。实验步骤不是书本内容的复制,而是自己结合实验内容进行探索的过程。
2. 提交打印版实验报告,A4纸张打印,并附源程序清单。
3. 提交的报告和源程序中标注清楚姓名学号专业等基本信息,禁止抄袭。
36