第二次DSP上機(jī)實(shí)驗(yàn)報告 MATLAB實(shí)驗(yàn)報告
北京郵電大學(xué)信息與通信工程學(xué)院
DSP--MATLAB實(shí)驗(yàn)報告
實(shí)驗(yàn)名稱:學(xué)生姓名:班級:
班內(nèi)序號:學(xué)號:日期:
1.實(shí)驗(yàn)要求與目的
要求:(1)用DFT分析頻譜,得到高分辨率頻譜清楚的譜線;
(2)利用基2時間抽選的FFT算法,計算有限點(diǎn)的DFT,并與理論值相比較。目的:掌握
(a)用傅立葉變換進(jìn)行信號分析時基本參數(shù)的選擇。
(b)經(jīng)過離散時間傅立葉變換(DTFT)和有限長度離散傅立葉變換(DFT)后信號頻譜上的區(qū)別,前者DTFT時間域是離散信號,頻率域還是連續(xù)的,而DFT在兩個域中都是離散的。
(c)離散傅立葉變換的基本原理、特性,以及經(jīng)典的快速算法(基2時間抽選法),體會快速算法的效率。
(d)獲得一個高密度頻譜和高分辨率頻譜的概念和方法,建立頻率分辨率和時間分辨率的概念,為將來進(jìn)一步進(jìn)行時頻分析(例如小波)的學(xué)習(xí)和研究打下基礎(chǔ)。
2關(guān)鍵算法分析
第1頁北京郵電大學(xué)信息與通信工程學(xué)院
代碼的重點(diǎn)是利用fft函數(shù)計算離散序列的DFT,難點(diǎn)是矩陣的加減乘除及乘方中所涉及的matlab語句的特點(diǎn)。實(shí)驗(yàn)代碼如下:(
1)N=1000;
n=(0:N-1);y=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);y=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);
XK=fft(y,N);--fft函數(shù)兩個參數(shù)分別是進(jìn)行DFT變換的序列,及DFT的長度subplot(3,1,1);stem(n,y);title("時域波形");xlabel("n");ylabel("y");
subplot(3,1,2);stem(abs(XK),".");axis([0,500,0,600]);--限定x軸與y軸的范圍title("頻域前500點(diǎn)波形");xlabel("k");ylabel("XK");
subplot(3,1,3);stem(abs(XK),".");axis([800,900,0,600]);--x軸的范圍很小,目的是能看到兩條很近的譜線
title("頻域后500點(diǎn)部分波形");xlabel("k");ylabel("XK");(2)N=25;Q=0.9+j*0.3;n=(0:24);
x=Q.^n;WN=exp(-j*2*pi/N);k=(0:24);WK=WN.^k;
XK=(1-Q.^N)./(1-Q*WK);stem(XK);---理論值的計算XK1=fft(x,32);--32點(diǎn)基2時間抽選法的計算
subplot(3,1,1);stem(n,x);title("時域波形");xlabel("n");ylabel("x");subplot(3,1,2);stem(XK);title("頻域理論值");xlabel("k");ylabel("XK");subplot(3,1,3);stem(XK1);title("頻域波形");xlabel("k");ylabel("XK1");
第2頁北京郵電大學(xué)信息與通信工程學(xué)院
3.程序運(yùn)行結(jié)果(1)
(2)
第3頁北京郵電大學(xué)信息與通信工程學(xué)院
4.問題分析
這次實(shí)驗(yàn)的題目相對簡單,編程過程中遇到的問題主要是矩陣的加減乘除及乘方運(yùn)算所對應(yīng)的matlab語句的規(guī)則和fft函數(shù)的使用,fft函數(shù)的使用方法通過help語句便可查得,其兩個參數(shù):第一個是指進(jìn)行fft運(yùn)算的序列,第二個值fft運(yùn)算的長度。而矩陣的運(yùn)算規(guī)則需要上網(wǎng)查看相關(guān)資料或與同學(xué)討論解決?偟膩碚f,這次實(shí)驗(yàn)比第一次編程時語句的運(yùn)用要熟練,而且編程比較順利
5.心得與總結(jié)
第一次用matlab編程時遇到了很多困難,其實(shí)現(xiàn)在想一下,用matlab編程時
第4頁北京郵電大學(xué)信息與通信工程學(xué)院
不愁沒有時間編,就愁拿出了好多時間,但真到編時總是報錯,又找不到錯在哪里。這是讓人很糾結(jié)的。這次編程我放棄了閉門造車,一個人冥思苦想的方式,而是在編的過程中與同學(xué)討論,互相糾錯,最后相對順利的把程序編了出來。另一個比較有感觸的是熟能生巧。第一次編程時什么都不懂,遇到不會編的語句就到網(wǎng)上去查,查到語句后又不知道那些語句中的參數(shù)代表什么,通過老師課上的講解,我學(xué)會了用help語句,而且也積累了一些基本的函數(shù),像axis,subplot,stem等,所以顯示波形的操作做起來就比較得心應(yīng)手了,多練習(xí)總是有好處的。
第5頁
擴(kuò)展閱讀:數(shù)字信號處理上機(jī)實(shí)驗(yàn)報告
數(shù)字信號處理上機(jī)實(shí)驗(yàn)報告
實(shí)驗(yàn)一熟悉MATLAB環(huán)境
一、實(shí)驗(yàn)?zāi)康?/p>
1、熟悉MATLAB的主要操作命令。2、學(xué)會簡單的矩陣輸入和數(shù)據(jù)讀寫。3、掌握簡單的繪圖命令。
4、用MATLAB編程并學(xué)會創(chuàng)建函數(shù)。5、觀察離散系統(tǒng)的頻率響應(yīng)。
二、實(shí)驗(yàn)內(nèi)容
認(rèn)真閱讀本章附錄,在MATLAB環(huán)境下重新做一遍附錄中的例子,體會各條命令的含義。在熟悉MATLAB基本命令的基礎(chǔ)上,完成以下實(shí)驗(yàn)。
上機(jī)實(shí)驗(yàn)內(nèi)容:
1、數(shù)組的加減乘除和乘方運(yùn)算,輸入A求CAB,1234,B3456,
DAB,EA.B,F(xiàn)A./B,GA.^B,并用stem語句畫出A、B、C、D、E、
F、G。
程序:
>>A=[1234];B=[3456];
C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B;
subplot(2,4,1);stem(A,".");subplot(2,4,2);stem(B,".");subplot(2,4,3);stem(C,".");subplot(2,4,4);stem(D,".");subplot(2,4,5);stem(E,".");subplot(2,4,6);stem(F,".");
subplot(2,4,7);stem(G,".")
2、用MATLAB實(shí)現(xiàn)下列序列。a)x(n)0.8n0n15b)x(n)e(0.23j)n0n15
n0.2)2sin(0.25n0.1)0n15c)x(n)3cos(0.125程序:A)clear;clc;n=[0:15];x1=0.8.^n;
subplot(3,1,1),stem(x1)title("x1=0.8^n")
xlabel("n");ylabel("x1");
B)clear;clc;n=[0:15];
x2=exp((0.2+3j)*n);subplot(3,1,1),stem(x2)title("x2=exp((0.2+3j)*n)")xlabel("n");ylabel("x2");
C)clear;clc;n=[0:15];
x3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi);subplot(3,1,1),stem(x3)
title("x3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi)")xlabel("n");ylabel("x3");
3、繪出下列時間常數(shù)的圖形,對x軸,y軸以及圖形上方均須加上適當(dāng)?shù)臉?biāo)注:
0t10sa)x(t)sin(2t)100t)sin(t)0t4sb)x(t)cos(>>m=0:0.01:10;n=0:0.01:4;x1t=sin(2*pi*m);
x2t=cos(100*pi*n).*sin(pi*n);subplot(2,1,1);plot(m,x1t);subplot(2,1,2);plot(n,x2t);
4、給定一因果系統(tǒng)H(z)=(1+2zz)/(1-0.67z的幅頻響應(yīng)與相頻響應(yīng)。
>>b=[1,sqrt(2),1];a=[1,-0.67,0.9];[h,w]=freqz(b,a);
am=20*log10(abs(h));%am=20*log10(abs(h))為幅頻響應(yīng)取dBsubplot(2,1,1);
-1-21z2),求出并繪制H(z)
plot(w,abs(h));xlabel("w");ylabel("幅頻響應(yīng)");title("系統(tǒng)響應(yīng)")ph=angle(h);subplot(2,1,2);
plot(w,ph);xlabel("w");ylabel("相頻響應(yīng)");
5、計算序列8-2-123和序列23-1-3的離散卷積,并作圖表示卷積結(jié)果。
>>a=[8-2-123];
b=[23-1-3];c=conv(a,b);M=length(c)-1;n=0:1:M;stem(n,c);
xlabel("n");ylabel("幅度");
6、求以下差分方程所描述系統(tǒng)的單位脈沖響應(yīng)h(n),0n50:
y(n)0.1y(n1)0.06y(n2)x(n)2x(n1)
程序:>>N=50;
a=[1-2];b=[10.1-0.06];x=[1zeros(1,N-1)];k=0:1:N-1;y=filter(a,b,x);stem(k,y);
xlabel("n");ylabel("幅度");
實(shí)驗(yàn)二快速傅里葉變換(FFT)及其應(yīng)用
一、實(shí)驗(yàn)?zāi)康?/p>
1、在理論學(xué)習(xí)的基礎(chǔ)上,通過本實(shí)驗(yàn),加深對FFT的理解,熟悉MATLAB中的有關(guān)函數(shù)。
2、應(yīng)用FFT對典型信號進(jìn)行頻譜分析。
3、了解應(yīng)用FFT進(jìn)行信號頻譜分析過程中可能出現(xiàn)的問題,以便在實(shí)際中正確應(yīng)用FFT。
4、應(yīng)用FFT實(shí)現(xiàn)序列的線性卷積和相關(guān)。
二、實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)中用到的信號序列
a)高斯序列
npq0n15xa(n)e0其他2b)衰減正弦序列
ensin(2fn)0n15xb(n)0其他c)三角波序列
0n3nxc(n)8n4n7
0其他d)反三角波序列
0n34nxd(n)n44n7
0其他上機(jī)實(shí)驗(yàn)內(nèi)容:
(1)觀察三角波和反三角波序列的時域和幅頻特性,用N8點(diǎn)FFT分析信號序列xc(n)和xd(n)的幅頻特性,觀察兩者的序列形狀和頻譜曲線有什么異同?繪出兩序列及其幅頻特性曲線。程序:
n=[0:3];k=[1:8];
Xc(n+1)=n;Xc(n+5)=4-n;Xd(n+1)=4-n;Xd(n+5)=n;
三角波特性
subplot(2,2,1);plot(k-1,Xc);
xlabel("n");ylabel("時域特性");text(1,3,"三角波");subplot(2,2,2);plot(k-1,abs(fft(Xc)));
xlabel("k");ylabel("幅頻特性");text(4,10,"三角波");反三角波特性
subplot(2,2,3);plot(k-1,Xd);
xlabel("n");ylabel("時域特性");text(3,3,"反三角波");subplot(2,2,4);plot(k-1,abs(fft(Xd)));
xlabel("k");ylabel("幅頻特性");text(4,10,"反三角波");
在xc(n)和xd(n)末尾補(bǔ)零,用N32點(diǎn)FFT分析這兩個信號的幅頻特性,觀察幅頻特性發(fā)生了什么變化?兩種情況下的FFT頻譜還有相同之處嗎?這些變化說明了什么?
程序:
>>n=[0:3];k=[1:32];Xc(n+1)=n;Xc(n+5)=4-n;Xd(n+1)=4-n;Xd(n+5)=n;
Xc(9:32)=0;Xd(9:32)=0;k=1:32;figure;
subplot(2,2,1);plot(k-1,Xc);
xlabel("n");ylabel("時域特性");text(1,3,"三角波");subplot(2,2,2);plot(k-1,abs(fft(Xc)));
xlabel("k");ylabel("幅頻特性");text(4,10,"三角波");
subplot(2,2,3);plot(k-1,Xd);
xlabel("n");ylabel("時域特性");text(3,3,"反三角波");subplot(2,2,4);plot(k-1,abs(fft(Xd)));
xlabel("k");ylabel("幅頻特性");text(4,10,"反三角波");
的16(2)用FFT分別計算xa(n)p8,q2和xb(n)0.1,f0.0625點(diǎn)循環(huán)卷積和線性卷積。程序:>>n1=0:1:15;
p1=8;q1=2;
x=exp(-(n1-p1).^2/q1);n2=0:1:15;a=0.1;f2=0.0625;
y=(exp(-a*n2)).*sin(2*pi*f2*n2);N=length(x);n=0:N-1;n3=0:30;X=fft(x);Y=fft(y);
x32=[xzeros(1,16)];y32=[yzeros(1,16)];X32=fft(x32);Y32=fft(y32);z16=ifft(X.*Y);z32=ifft(X32.*Y32);subplot(2,2,1);plot(n,z16,"-*");xlabel("n");ylabel("z(n)");title("循環(huán)卷積結(jié)果");subplot(2,2,2);
plot(n3,z32(1:2*N-1),"-o");xlabel("n");ylabel("z(n)");title("線性卷積結(jié)果");rm16=real(ifft(conj(X).*Y));rm32_0=real(ifft(conj(X32).*Y32));rm32=[rm32_0(N+2:2*N)rm32_0(1:N)];m=n;
11subplot(2,2,3);plot(m,rm16,"--");xlabel("m");ylabel("rm");
title("循環(huán)相關(guān)結(jié)果");m=-(N-1):N-1;subplot(2,2,4);plot(m,rm32,"--o");xlabel("m");
ylabel("rm");title("線性相關(guān)結(jié)果");
(3)產(chǎn)生一512點(diǎn)隨機(jī)序列x,并用x和x作線性卷積,觀察卷(((en)en)cn)積前后x頻譜變化。要求將x分成8段,分別采用重疊相加法和重疊保留((en)en)法。程序:
>>n=0:7;m=1:512xc(1:4)=n(1:4);xc(5:8)=8-n(5:8);xe=rand(1,512);Xek=fft(xe);hk=fft(xc,128);subplot(3,1,1);stem(m,Xek);xlabel("n");ylabel("Xek");title("卷積前序列");forj=1:8;
x(j,:)=xe(64*(j-1)+1:64*j);
xk(j,:)=fft(x(j,:),128);
end;
y=zeros(1,576);fori=1:8y=y+f(i,:);end
subplot(3,1,2);m=0:518;
plot(m,abs(fft(y(1:519))));axis([0,518,0,250]);xlabel("k");ylabel("頻域");
title("重疊相加法幅頻特性")x2(1,1:71)=[zeros(1,7)xe(1:64)];
forj=2:8
f(j,(64*(j-1)+1):(64*(j-1)+128))=ifft(xk(j,:).*hk);
x2(j,:)=xe((64*(j-1)-6):(64*j));end
x2(9,:)=[xe(506:512),zeros(1,64)];forj=1:9
xk2(j,:)=fft(x2(j,:),128);f2(j,:)=ifft(xk2(j,:).*hk);end;
y2=zeros(1,576);fori=1:9
y2(1,64*(i-1)+1:64*i)=f2(i,8:71);end
subplot(3,1,3);m=0:518;
plot(m,abs(fft(y2(1:519))));axis([0,518,0,250]);xlabel("k");ylabel("頻域");
title("重疊保留法幅頻特性")
(4)用FFT分別計算xa(n)p8,q2和xb(n)0.1,f0.0625的自相關(guān)函數(shù)。程序:>>N=16;n=0:N-1;p=8;q=2;
Xa(n+1)=exp(-(n-p).^2./q);a=0.1;f=0.0625;
Xb(n+1)=exp(-a.*n).*sin(2*pi*f.*n);N=length(Xa);
Fa=fft(Xa,2*N);Fb=fft(Xb,2*N);F1=conj(Fa).*Fa;X81=real(ifft(F1));
X81=[X81(N+2:2*N)X81(1:N)];n=(-N+1):(N-1);
subplot(2,1,1);stem(n,X81);xlabel("n");ylabel("幅度");
Fb=fft(Xb,2*N);F2=conj(Fb).*Fb;X82=real(ifft(F2));
X82=[X82(N+2:2*N)X82(1:N)];%n=(-N+1):(N-1);
subplot(2,1,2);stem(n,X82);
xlabel("n");ylabel("幅度");
小結(jié):
1.熟悉了MATLAB的主要操作命令,學(xué)會了簡單的繪圖命令,會用MATLAB編程并學(xué)會創(chuàng)建函數(shù),能通過圖像觀察離散系統(tǒng)的頻率響應(yīng)。
2.在理論學(xué)習(xí)的基礎(chǔ)上,通過本實(shí)驗(yàn),加深了對FFT的理解,熟悉MATLAB中的有關(guān)函數(shù)。能夠應(yīng)用FFT對典型信號進(jìn)行頻譜分析,從而了解應(yīng)用FFT進(jìn)行信號頻譜分析過程中可出現(xiàn)的問題,學(xué)會了應(yīng)用FFT實(shí)現(xiàn)序列的線性卷積和相關(guān)。
友情提示:本文中關(guān)于《第二次DSP上機(jī)實(shí)驗(yàn)報告 MATLAB實(shí)驗(yàn)報告》給出的范例僅供您參考拓展思維使用,第二次DSP上機(jī)實(shí)驗(yàn)報告 MATLAB實(shí)驗(yàn)報告:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。