《數(shù)字信號處理實驗報告一》由會員分享,可在線閱讀,更多相關(guān)《數(shù)字信號處理實驗報告一(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 武漢工程大學(xué)
數(shù)字信號處理實驗報告
姓名:周權(quán)
學(xué)號:1204140228
班級 :通信工程02
一、實驗設(shè)備
計算機,MATLAB語言環(huán)境。
二、實驗基礎(chǔ)理論
1.序列的相關(guān)概念
2.常見序列
3.序列的基本運算
4.離散傅里葉變換的相關(guān)概念
5.Z變換的相關(guān)概念
三、實驗內(nèi)容與步驟
1.離散時間信號(序列)的產(chǎn)生
利用MATLAB語言編程產(chǎn)生和繪制單位樣值信號、單位階躍序列、指數(shù)序列、正弦序列及隨
2、機離散信號的波形表示。
四 實驗?zāi)康?
認(rèn)識常用的各種信號,理解其數(shù)字表達(dá)式和波形表示,掌握在計算機中生成及繪制數(shù)字信號波形的方法,掌握序列的簡單運算及計算機實現(xiàn)與作用,理解離散時間傅里葉變換,Z變換及它們的性質(zhì)和信號的頻域分
實驗一 離散時間信號(序列)的產(chǎn)生
代碼一
單位樣值
x=2;
y=1;
stem(x,y);
title(單位樣值 )
單位階躍序列
n0=0;
n1=-10;
n2=10;
n=[n1:n2];
x=[(n-n0)>=0];
stem(n,x);
xlabel(n);
ylabel(x{n});
title(單位階
3、躍序列);
實指數(shù)序列
n=[0:10];
x=(0.5).^n;
stem(n,x);
xlabel(n);
ylabel(x{n});
title(實指數(shù)序列);
正弦序列
n=[-100:100];
x=2*sin(0.05*pi*n);
stem(n,x);
xlabel(n);
ylabel(x{n});
title(正弦序列);
隨機序列
n=[1:10];
x=rand(1,10);
subplot(221);
stem(n,x);
xlabel(n);
ylabel(x{n});
title(隨機序列);
實驗二
4、序列的運算
(1)利用MATLAB語言編程實現(xiàn)信號平滑運算。
(2)利用MATLAB語言編程實現(xiàn)信號的調(diào)制。
(3)利用MATLAB語言編程實現(xiàn)信號卷積運算。
(4)利用MATLAB語言編程實現(xiàn)信號離散傅立葉的正反變換。
利用MATLAB語言編程實現(xiàn)信號的圓周移位、圓周卷積,驗證DFT 的圓周時移、圓周卷積性質(zhì)和圓周卷積與線性卷積的關(guān)系。 驗證一個周期實序列奇偶部分的DFT與此序列本身的DFT之間的關(guān)系。
實驗二 序列的運算
平滑運算
r=51;
d=0.8*(rand(r,1)-0.5);
m=0:r-1;
s=2*m.*(0.9.^m);
x=s+d;
su
5、bplot(2,1,1);
plot(m,d,r-,m,s,g--,m,x,b-.);
xlabel(Time index n);
ylabel(Amplitude);
legend(d[n],s[n],x[n]);
x1=[0 0 x]; x2=[0 x 0]; x3=[x 0 0];
y=(x1+x2+x3)/3;
subplot(2,1,2);
plot(m,y(2:r+1),r-,m,s,g--);
legend(y[n],s[n]);
xlabel(Time index n);
ylabel(Amplitude);
調(diào)制程序
Fm=10;Fc=100;F
6、s=500;k=0:199;t=k/Fs;
x=sin(2*pi*Fm*t);y=x.*cos(2*pi*Fc*t);
X=fft(x,256);Y=fft(y,256);subplot(2,2,1);
plot(x);xlabel(t(s));ylabel(x);
title();
subplot(2,2,2);plot(X);
plot([-128:127],fftshift(abs(X)));xlabel(w);ylabel(X(jw));
title(xx);
subplot(2,2,3);plot(y);xlabel(t(s));ylabel(y);
title(x
7、y);
subplot(2,2,4);plot(Y);plot([-128:127],fftshift(abs(Y)));
xlabel(w);ylabel(Y(jw));
title(yy);
卷積M函數(shù)
function[y,ny]=conv_m(x,nx,h,nh)
nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));
ny=[nyb:nye];
y=conv(x,h);
卷積程序
x=[0 0.5 1 1.5 0];nx=0:4;
h=[1 1 1 10 0];nh=0:4;
[y,ny]=conv_m(x,n
8、x,h,nh);
subplot(2,2,1);stem(nx,x);title(xulie x);
xlabel(n);ylabel(x(n));
subplot(2,2,2);stem(nh,h);title(xulie h);
xlabel(n);ylabel(h(n));
subplot(2,2,3);stem(ny,y);title(junji);
xlabel(n);ylabel(y(n));
Dft
function[Xk]=dft(xn,N)
n=[0:1:N-1];
k=n;
WN=exp(-j*2*pi/N);
nk=n*k;
WNnk=WN.
9、^nk;
Xk=xn*WNnk;
Idft
function[Xk]=idft(xn,N)
n=[0:1:N-1];
k=n;
WN=exp(-j*2*pi/N);
nk=n*k;
WNnk=WN.^(-nk);
Xk=xn*WNnk/N;
程序
xn=[1,1,1,1];
N=4;
xk=dft(xn,N)
xk=[4,0,0,0];
N=4;
xk=idft(xn,N)
Matlab程序
xn=[1,1,1,1]; N=length(xn); n=0:N-1; k=0:N-1;
Xk=xn*exp(-j*2*pi/N).^(n*k);
10、
x=(Xk*exp(j*2*pi/N).^(n*k))/N;
subplot(1,2,2);
stem(k,abs(Xk));grid;
title(|X(k)|);
axis([-1,N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);
subplot(1,2,1);
stem(n,xn);grid;
title(x(n));
axis([-1,N,1.1*min(xn),1.1*max(xn)]);
序列的圓周移位
已知序列X(n)=10(0.8)n(0≤n≤10),序列圓周向右移m=3,繪制原序列波形和圓周移位序列波
11、形
cigmod函數(shù)
function m=sigmod(n,N);
m=rem(n,N);
m=m+N;
m=rem(m,N);
cirshhift函數(shù)
function y=cirshift(x,m,N);
if length(x)>N
error(N must be greater then length(x));
end
x=[x zeros(1,N-length(x))];
n=[0:N-1];
n=sigmod(n-m,N);
y=x(n+1);
圓周移位程序
n=[0:10];
M=6;
N=11;
x=10*0.8.^n;
y=cirs
12、hift(x,M,N);
subplot(211)
stem(n,x);
title(原序列波形);
xlabel(n);ylabel(x(n));
subplot(212)
stem(n,y);
title(圓周移位序列波形);
xlabel(n);ylabel(y(n));
圓周卷積
已知X1=[1 2 2],x2=[1 2 3 4],試計算x1x2
程序卷積程序
function y=circonvt(x1,x2,N)
if length(x1)>N
error(Length(x1)is not great than N);
end
if le
13、ngth(x2)>N
erroe(Lengeh(x2)is not greater than N);
end
x1=[x1,zeros(1,N-length(x1))];
x2=[x2,zeros(1,N-length(x2))];
m=[0:N-1];
x2=x2(mod(-m,N)+1);
H=zeros(N,N);
for n=1:N;
H(n,:)=cirshift(x2,n-1,N);
end
y=x1*H;
運算程序x1=[1 2 2];
x2=[1 2 3 4];
disp(N=5)
N=5;
y=circonvt(x1,x2,N)
14、
Z變換求(n-1)u(n)的Z變換
F=ztrans(sym(n-1))
F=simplify(F)
F=
z/(z-1)^2-z/(z-1)
F=
-(z*(z-2))/(z-1)^2
結(jié)果分析:將函數(shù)分解為nu(n)-3u(n),再分別進行Z變換。其中用到了ztrans函數(shù)和simplify函數(shù)
逆Z變換 求X(z)=z-1/(1+z-1-20z-2),4<|z|<5
a=[1 1 -20];
b=[0 1 0];
[r,p,k]=residuez(b,a)
結(jié)果分析:r=-1,1為函數(shù)z變換后的系數(shù),p為逆變換后系數(shù)。
15、
驗證一個周期實序列奇偶部分的DFT與此序列本身的DFT之間關(guān)系
dft程序
function[Xk]=dft(xn,N) n=[0:1:N-1];
k=n;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.^nk;Xk=xn*WNnk;
Idft程序
function[Xk]=idft(xn,N)n=[0:1:N-1];k=n;
WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N;
function[xev,xod]=circevod(x)
if any(imag(x)~=0)
error(不是實
16、序列)
end
N=length(x);
n=0:(N-1);
xev=0.5*(x+x(sigmod(-n,N)+1));xod=0.5*(x-x(sigmod(-n,N)+1));
已知序列X(n)=10(0.8)n,序列長度N=21繪出傅里葉的奇數(shù)部分和偶數(shù)部分并求它們的DFT
n=[0:20];N=length(n);x=10*0.8.^n;[xev,xod]=circevod(x);
subplot(221);stem(n,xev);title(奇部);xlabel(n);ylabel(xev(n));
subplot(222)stem(n,xod);
title(
17、偶部);xlabel(n);ylabel(xod(n));
hold onplot(n,zeros(1,N))
hold off
Xkev=dft(xev,N);Xkod=dft(xod,N);Xkse=dft(x,N);
subplot(223);stem(n,real(Xkev));
xlabel(n);ylabel(Xkev(k));
title(偶部分的DFT);
subplot(224);stem(n,imag(Xkod));
xlabel(k);ylabel(Xkod(k));
title(奇部分的DFT);hold on
plot(n,zeros(1,N))
18、
hold off
四:實驗總結(jié)
通過這幾個實驗對MATLAB有了簡單的認(rèn)識,并學(xué)會了基本的編寫方法,也從中了解到了一些基本運算函數(shù)。但是對于復(fù)雜的程序并不能準(zhǔn)確給出,必須借助一些其他力量完成。對于MATLAB學(xué)習(xí)還有很多需要在仔細(xì)學(xué)習(xí),僅僅通過課堂時間完全不夠。
5. 實驗拓展與思考
1.編程產(chǎn)生方波信號序列和鋸齒波信號序列。
clf
x=[0:0.01:10];
y1=square(pi*x);
subplot(1,2,1)
plot(x,y1);
axis([0,10,-2,2]);
xlabel(x);ylabel(y1);
titl
19、e(‘方波);
y2=sawtooth(0.5*pi*x);
subplot(1,2,2);
plot(x,y2);
xlabel(x);ylabel(y2);
title(鋸齒波);
2.試驗中你所產(chǎn)生的正弦序列的頻率是多少?怎樣才能改變它?分別是哪些參數(shù)控制該序列的相位。振幅和周期?
0.05pi,在函數(shù)里面可以進行修改,A控制振幅,周期由頻率控制。
3.編程實現(xiàn)序列長度為N的L點的正反離散傅立葉變換,并分析討論所得的結(jié)果,其中L>=N,如L=8,N=6。
Dft
function[Xk]=dft(xn,N)
n=[0:1:L-1];
k=n;
W
20、N=exp(-j*2*pi/N);
nk=n*k;
WNnk=WN.^nk;
Xk=xn*WNnk;
Idft
function[Xk]=idft(xn,N)
n=[0:1:L-1];
k=n;
WN=exp(-j*2*pi/N);
nk=n*k;
WNnk=WN.^(-nk);
Xk=xn*WNnk/N;
4.由實驗說明離散傅立葉變換的對稱關(guān)系,說明序列的時域和頻域的關(guān)聯(lián)特性。
1其實這是一個一般的規(guī)律,一個長為N的實數(shù)數(shù)組a,對其進行離散傅里葉變換得數(shù)組A,則A(i)與A(N-i)互為共軛,其i的取值與N的奇偶有關(guān),詳細(xì)如下:
1)N為偶數(shù)時,i=1,...,N/2-1,A(0)與A(N/2)各為其值,且肯定是實數(shù);
2)N為奇數(shù)時,i=1,...,(N-1)/2,A(0)為實數(shù)
2若y(n)=x1(n)x2(n)則Y(k)=(1/N)X1(k)X2(k)