第一篇:現代信號處理課程設計報告(中南大學)
目錄
一、課程設計目的要求 ………………………………………… 1
二、課程設計選題 ……………………………………………… 1
三、程序分析及運行果 …………………………………………
1、第一題 ……………………………………………………
2、第三題 ……………………………………………………
3、第五題 ……………………………………………………
4、第七題 ……………………………………………………
四、課程設計總結 ………………………………………………
參考文獻 …………………………………………………………
附.程序源代碼 ……………………………………………………
2 4 6 9 12 13 14
一、課程設計目的要求
1.全面復習課程所學理論知識,鞏固所學知識重點和難點,將理論與實踐很好地結合起來。
2.提高綜合運用所學知識獨立分析和解決問題的能力; 3.熟練使用一種高級語言進行編程實現。
二、課程設計選題
本次課程設計,按任務書要求選擇了1、3、5、7題,第8題為選作,因為能力有限,所以并未選擇,現將題目及要求摘錄如下:
1.給定模擬信號:xa(t)?Ae?atsin(?0t)u(t),式中A?444.128,??502?,?0?502? rad/s。對xa(t)進行采樣,可得采樣序列
x(n)?xa(nT)?Ae?anTsin(?0nT)u(nT)1)選擇采樣頻率fs=1 kHz,觀測時間Tp?50ms,觀測所得序列x(n)及其幅頻特性|X(ejw)|
2)改變采樣頻率fs=300Hz,觀測此時|X(ejw)|的變化 3)令采樣頻率fs=200Hz,觀測此時|X(ejw)|的變化
要求分析說明原理,繪出相應的序列及其它們對應的幅頻特性曲線,指出|X(ejw)|的變化,說明為什么?
3.一個連續信號含兩個頻率分量,經采樣得
x(n)=sin2π*0.125n+cos2π*(0.125+Δf)n n=0,1……,N-1 已知N=16,Δf分別為1/16和1/64,觀察其幅頻特性;當N=128時,Δf不變,其結果有何不同,為什么?分析說明原因,并打印出相應的幅頻特性曲線
11?9?n)?cos(n),使用FFT分析其頻譜: 5.一個序列為x(n)?0.5cos(20201)使用不同寬度的矩形窗截短該序列為M點長度,取M分別為: a)M=20 b)M=40 c)M=160 ;觀察不同長度的窗對譜分析結果的影響; 2)使用漢寧窗、哈明窗重做1)
3)對三種窗的結果進行理論分析及比較。并繪出相應的幅頻特性曲線
7.FIR DF的設計
分別利用矩形窗、漢寧窗、哈明窗設計一個N=11的線性相位FIR 低通和高通數字濾波器,截止頻率?c??3rad,要求:求出各濾波器的單位脈沖響應h(n);繪出各濾波器的幅頻及相頻響應曲線;觀察各濾波器的通帶波紋和阻帶波紋;比較不同窗函數對濾波特性的影響。
三、程序分析及運行結果
程序綜述及GUI界面:程序全部利用matlab語言寫成,通過與GUI模塊的按鈕控件pushbutton鏈接,使之能夠通過按動按鈕跳出顯示窗口來實現程序的運行以及最后結果的呈現,簡潔明了。程序最終的GUI界面如下圖所示:
1、第一題:
設計思想:此程序按第一題題目要求,預先給定了模擬信號?at(t)?Aesin(?0t)u(t),同時給出了相關參數,A?444.128,??502?,xa?0?502?按照題目要求直接在程序中定義相關變量并賦值。題目還rad/s。要求采取三種不同的采樣頻率分別為1kHZ、300HZ和200HZ,所以T1=0.001,T2=1/300,T3=0.005。Fft函數對序列進行傅立葉變換,得到幅頻特性曲線。程序通過subplot、stem、plot等函數將結果顯示在彈出的窗口中。這樣第一題的要求就基本實現了。程序代碼:
A=444.128;%設定參數 w=50*sqrt(2)*pi;a=50*sqrt(2)*pi;T1=0.001;N1=50;n=0:49;x1=A*exp(-a*n*T1).*sin(w*n*T1);%所給信號 figure;subplot(3,2,1);stem(x1,'.');%坐標函數及現實函數 xlabel('n');ylabel('x(n)');title('x(n)序列1');y1=fft(x1,N1);%傅立葉變換 subplot(3,2,2);plot(abs(y1));xlabel('(N=50 wk=2pik/N)k');ylabel('|X1(jw)|');title('幅頻特性|X1(jw)|');
T2=1/300;N2=15;n=0:14 x2=A*exp(-a*n*T2).*sin(w*n*T2);subplot(3,2,3);stem(x2,'.');xlabel('n');ylabel('x(n)');title('x(n)序列2');y2=fft(x2,N2);subplot(3,2,4);plot(abs(y2));xlabel('(N=15 wk=2pik/N)k');ylabel('|X2(jw)|');title('幅頻特性|X2(jw)|');T3=0.005;N3=10;n=0:9;x3=A*exp(-a*n*T3).*sin(w*n*T3);subplot(3,2,5);stem(x3,'.');xlabel('n');ylabel('x(n)');title('x(n)序列3');y3=fft(x3,N3);subplot(3,2,6);plot(abs(y3));xlabel('(N=10 wk=2pik/N)k');ylabel('|X3(jw)|');title('幅頻特性|X3(jw)|');
運行結果:
結果分析:從運行結果看,隨著采樣頻率的減少,幅頻特性的失真越明顯。所以采樣頻率越低,越容易失真。
2、第三題:
設計思想:用FFT進行譜分析時,首先必須對信號進行采樣,使之變成離散信號,然后就可按照前面的方法用FFT來對連續信號進行譜分析。按采樣定理,采樣頻率fs應大于2倍信號的最高頻率,為了滿足采樣定理,一般在采樣之前要設置一個抗混疊低通濾波器。
按題目要求,講程序分為N=16和N=128兩部分。首先定義出N、f1、f2等參數,接著列出題目所要求的信號,然后利用傅立葉變換函數,最后通過坐標以及輸出函數得出相應幅頻特性曲線。程序代碼:
%第三題(N=16)N=16;n=0:15;f1=1/16;f2=1/64;
x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n);y1=fft(x1,16);%傅立葉變換函數 figure;
subplot(2,2,1);stem(n,abs(y1),'.');
axis([0 15 0 8]);%標注坐標長度
xlabel('(N=16 wk=2pik/N)k');ylabel('|X1(K)|');
title('幅頻特性|X1(K)|');
x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)*n);y2=fft(x2,16);
subplot(2,2,2);stem(n,abs(y2),'.');axis([0 15 0 8]);
xlabel('(N=16 wk=2pik/N)k');ylabel('|X2(K)|');title('幅頻特性|X2(K)|');%第三題(N=128)N=128;n=0:127;f1=1/16;f2=1/64;
x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n);y3=fft(x1,128);figure;
subplot(2,2,1);stem(n,abs(y3),'.');axis([0 127 0 65]);
xlabel('(N=128 wk=2pik/N)k');ylabel('|X3(K)|');title('幅頻特性|X3(K)|');
x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)*n);y4=fft(x2,128);
subplot(2,2,2);stem(n,abs(y4),'.');axis([0 127 0 65]);
xlabel('(N=128 wk=2pik/N)k');ylabel('|X4(K)|');title('幅頻特性|X4(K)|');
運行結果: N=16:
N=128:
結果分析:由實驗運行結果可得出當采樣點數N不同時,信號的幅頻特性是不同的,這是因為X(k)是x(n)的傅里葉變換X(ejw)在頻率區間[0,2π]上的N點等間隔采樣,這就是DFT的物理意義,由此可見,DFT的變換長度N不同,表示對X(ejw)在[0,2π]區間上的采樣間隔和采樣點數不同,所以DFT的變換結果不同。
3、第五題:
設計思想:本題給定了一個序列,要求用窗函數截短。通過調整窗口長度可以有效的控制過渡段的寬度。其中題目中要求的漢寧窗是升余弦窗,能夠使能量更集中在主瓣中;哈明窗是改進的升余弦窗,能使能量更加集中在主瓣中。本程序定義了窗長度,給出相應的序列之后,用窗函數去截短相應的長度,最后通過窗口輸出截短后的序列。程序代碼:
%第五題(矩形窗)
M1=20;M2=40;M3=160;%定義窗長度 n1=0:19;n2=0:39;n3=0:159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);%相應序列 x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);b1=boxcar(M1)'.*x1;%用窗函數截短 b2=boxcar(M2)'.*x2;b3=boxcar(M3)'.*x3;figure;
subplot(3,1,1);stem(abs(fft(b1)),'.');subplot(3,1,2);stem(abs(fft(b2)),'.');subplot(3,1,3);stem(abs(fft(b3)),'.');%第五題(漢寧窗)
M1=20;M2=40;M3=160;%定義窗長度 n1=0:19;n2=0:39;n3=0:159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);
x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);y1=hanning(M1)'.*x1;%窗函數截短 y2=hanning(M2)'.*x2;y3=hanning(M3)'.*x3;figure;
subplot(3,1,1);stem(abs(fft(y1)),'.');subplot(3,1,2);stem(abs(fft(y2)),'.');subplot(3,1,3);stem(abs(fft(y3)),'.');%第五題(哈明窗)
M1=20;M2=40;M3=160;%定義窗長度 n1=0:19;n2=0:39;n3=0:159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);h1=hamming(M1)'.*x1;%窗函數截短 h2=hamming(M2)'.*x2;h3=hamming(M3)'.*x3;figure;
subplot(3,1,1);stem(abs(fft(h1)),'.');subplot(3,1,2);stem(abs(fft(h2)),'.');subplot(3,1,3);stem(abs(fft(h3)),'.');
運行結果: 矩形窗:
漢寧窗:
哈明窗:
結果分析:信號的截短產生了能量泄漏,不同的窗函數,產生泄漏的大小不一樣,頻率分辨能力也不一樣,用FFT算法計算頻譜又產生了柵欄效應,所以不同的窗函數對信號頻譜的影響是不一樣的。從運行結果中可以看出矩形窗主瓣比較集中,旁瓣較高,并有負旁瓣;漢寧窗和哈明窗結果從圖上粗看基本一樣,但哈明窗加權的系數能使旁瓣達到更小。
4、第七題: 設計思想:
題目要求分別利用矩形窗、漢寧窗、哈明窗設計一個N=11的線性相位FIR 低通和高通數字濾波器。FIR濾波器在保證幅度特性滿足技術要求的同時,很容易做到有嚴格的線性相位特性。FIR濾波器設計的任務是選擇有限長度的h(n),使傳輸函數H(ejw)滿足技術要求。本題中要求設計的線性相位FIR濾波器的,可利y用fir1函數設計出濾波器,再利用freqz函數得出其頻率響應。程序代碼:
%第七題(矩形窗)N=10;wn=1/3;b1lp=fir1(N,wn,boxcar(N+1));%用fir1函數設計低通濾波器
b1hp=fir1(N,wn,'high',boxcar(N+1));%用fir1函數設計高通濾波器 M=1024;w=0:(M-1);t=0:10;
h1lp=freqz(b1lp,1,w/M*2*pi);%得出頻率響應 h1hp=freqz(b1hp,1,w/M*2*pi);figure;
subplot(3,2,1);stem(t,b1lp,'.');subplot(3,2,2);stem(t,b1hp,'.');subplot(3,2,3);
plot(w(1:(M/2))/M*2,abs(h1lp(1:(M/2))));subplot(3,2,4);
plot(w(1:(M/2))/M*2,abs(h1hp(1:(M/2))));subplot(3,2,5);
plot(w/M*2,angle(h1lp));subplot(3,2,6);
plot(w/M*2,angle(h1hp));%第七題(漢寧窗)N=10;wn=1/3;
b2lp=fir1(N,wn,hanning(N+1));
b2hp=fir1(N,wn,'high',hanning(N+1));M=1024;
w=0:(M-1);t=0:10;
h2lp=freqz(b2lp,1,w/M*2*pi);h2hp=freqz(b2hp,1,w/M*2*pi);figure;
subplot(3,2,1);stem(t,b2lp,'.');subplot(3,2,2);stem(t,b2hp,'.');subplot(3,2,3);
plot(w(1:(M/2))/M*2,abs(h2lp(1:(M/2))));subplot(3,2,4);
plot(w(1:(M/2))/M*2,abs(h2hp(1:(M/2))));subplot(3,2,5);
plot(w/M*2,angle(h2lp));subplot(3,2,6);
plot(w/M*2,angle(h2hp));
%第七題(哈明窗)N=10;wn=1/3;
b3lp=fir1(N,wn,hamming(N+1));
b3hp=fir1(N,wn,'high',hamming(N+1));M=1024;w=0:(M-1);t=0:10;
h3lp=freqz(b3lp,1,w/M*2*pi);h3hp=freqz(b3hp,1,w/M*2*pi);figure;
subplot(3,2,1);stem(t,b3lp,'.');subplot(3,2,2);stem(t,b3hp,'.');subplot(3,2,3);
plot(w(1:(M/2))/M*2,abs(h3lp(1:(M/2))));subplot(3,2,4);
plot(w(1:(M/2))/M*2,abs(h3hp(1:(M/2))));subplot(3,2,5);
plot(w/M*2,angle(h3lp));subplot(3,2,6);
plot(w/M*2,angle(h3hp));
運行結果:
矩形窗:
漢寧窗:
哈明窗:
結果分析:如運行結果所示,通過三個窗口設計出的濾波器,得到的頻率響應特性是不同的。此題再次驗證了第五題的結論:矩形窗主瓣比較集中,旁瓣較高,并有負旁瓣;漢寧窗和哈明窗都有使能量集中在主瓣中的作用,但哈明窗加權的系數能使旁瓣達到更小。
四、課程設計總結:
隨著課程設計報告的基本完成,本次課程設計終于接近了尾聲。本次課程設計要求我們利用上學期所學的現代信號處理課程的知識結合MATLAB編程工具,完成幾道信號處理以及濾波器設計的題目,通過實際操作,回顧所學內容,夯實基礎,強化理論知識,并體驗理論與實際相結合的過程。
設計過程中遇到的第一個問題便是對于MATLAB語言的不熟悉,其實現在想想這個本不應該成為問題。雖然本專業并沒有開設MATLAB程序設計這門課,但是在上學期上現代信號處理課時老師已經向我們強調過MATLAB語言的重要性,并且也在課堂上通過PPT的形式向我們展示了其部分功能。同時,老師還在上學期結課時特別提醒過課程設計會用到MATLAB語言,要求我們在暑假里去熟悉它。可惜的是,老師的的話并沒有引起我的足夠重視,才導致等到要真正設計的時候一頭霧水,無從下手。通過這件事,我明白了對于一件事情,想要做得很好,提前做功課和準備是必不可少的,機會只垂青有準備的人。
當然,通過本次課程設計,我還是基本熟悉了一些MATLAB模塊以及與本課程有關的一些函數的用法。但是由于上學期先代信號處理課程學得不是很好,所以也就是在懂的同學的指導下按部就班的寫了一些代碼,也沒有什么創新,但還是很好的回顧的所學的頻譜分析以、傅立葉變換以及濾波器設計的內容。也實際設計了一個濾波器,雖然借助與MATLAB函數,但也算一個不錯的結果。老師在任務書中提到的目的要求,我自認為多多少少完成到達了一些。但不可否認的是還有很多沒有達到。總之,很多東西還是需要自己在不斷的摸索中找到答案。
另外,通過這次課程設計讓我認識了一門新的語言———MATLAB,它在以后的學習中還會用到,相信在以后學習的過程的中,我會比較好的掌握并運用它。
參考文獻
1、《數字信號處理》第二版,丁玉美 高西全等,西安電子科技大學出版社,2001.1
2、《MATLAB及在電子信息課程中的應用》,陳懷琛等,電子工業出版社出版,2002.4
3、《MATLAB數字信號處理與應用》,張德豐等,清華大學出版社,2010
4、《MATLAB數字信號處理》,王彬等,機械工業出版社,2010
5、《信號與信息處理基礎》,彭軍 李宏等,中國鐵道出版社,2009.2
附.程序源代碼
function varargout = untitled(varargin)%UNTITLED M-file for untitled.fig
% UNTITLED, by itself, creates a new UNTITLED or raises the existing % singleton*.%
% H = UNTITLED returns the handle to a new UNTITLED or the handle to % the existing singleton*.%
% UNTITLED('Property','Value',...)creates a new UNTITLED using the % given property value pairs.Unrecognized properties are passed via % varargin to untitled_OpeningFcn.This calling syntax produces a % warning when there is an existing singleton*.%
% UNTITLED('CALLBACK')and UNTITLED('CALLBACK',hObject,...)call the % local function named CALLBACK in UNTITLED.M with the given input % arguments.%
% *See GUI Options on GUIDE's Tools menu.Choose “GUI allows only one % instance to run(singleton)”.%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help untitled
% Last Modified by GUIDE v2.5 21-Oct-2011 14:29:04
% Begin initialization codeDO NOT EDIT
%---Executes just before untitled is made visible.function untitled_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
%---Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%第三題(N=16)N=16;n=0:15;f1=1/16;f2=1/64;
x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n);y1=fft(x1,16);%傅立葉變換函數 figure;
subplot(2,2,1);stem(n,abs(y1),'.');axis([0 15 0 8]);%標注坐標長度
xlabel('(N=16 wk=2pik/N)k');ylabel('|X1(K)|');title('幅頻特性|X1(K)|');
x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)*n);y2=fft(x2,16);
subplot(2,2,2);stem(n,abs(y2),'.');axis([0 15 0 8]);
xlabel('(N=16 wk=2pik/N)k');ylabel('|X2(K)|');title('幅頻特性|X2(K)|');
%---Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB
% handles structure with handles and user data(see GUIDATA)
%第五題(矩形窗)
M1=20;M2=40;M3=160;%定義窗長度 n1=0:19;n2=0:39;n3=0:159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);%相應序列 x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);b1=boxcar(M1)'.*x1;%用窗函數截短 b2=boxcar(M2)'.*x2;b3=boxcar(M3)'.*x3;figure;
subplot(3,1,1);stem(abs(fft(b1)),'.');subplot(3,1,2);stem(abs(fft(b2)),'.');subplot(3,1,3);stem(abs(fft(b3)),'.');
%---Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB% handles structure with handles and user data(see GUIDATA)
%第五題(哈明窗)
M1=20;M2=40;M3=160;%定義窗長度 n1=0:19;n2=0:39;n3=0:159;
x1=0.5*cos(11*pi*n1/20)+cos(9*pi*n1/20);x2=0.5*cos(11*pi*n2/20)+cos(9*pi*n2/20);x3=0.5*cos(11*pi*n3/20)+cos(9*pi*n3/20);h1=hamming(M1)'.*x1;%窗函數截短 h2=hamming(M2)'.*x2;h3=hamming(M3)'.*x3;figure;
subplot(3,1,1);stem(abs(fft(h1)),'.');subplot(3,1,2);stem(abs(fft(h2)),'.');subplot(3,1,3);stem(abs(fft(h3)),'.');
%---Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%第七題(矩形窗)N=10;wn=1/3;
b1lp=fir1(N,wn,boxcar(N+1));%用fir1函數設計低通濾波器
b1hp=fir1(N,wn,'high',boxcar(N+1));%用fir1函數設計高通濾波器 M=1024;w=0:(M-1);t=0:10;
h1lp=freqz(b1lp,1,w/M*2*pi);%得出頻率響應 h1hp=freqz(b1hp,1,w/M*2*pi);figure;
subplot(3,2,1);stem(t,b1lp,'.');subplot(3,2,2);stem(t,b1hp,'.');subplot(3,2,3);
plot(w(1:(M/2))/M*2,abs(h1lp(1:(M/2))));subplot(3,2,4);
plot(w(1:(M/2))/M*2,abs(h1hp(1:(M/2))));subplot(3,2,5);
plot(w/M*2,angle(h1lp));subplot(3,2,6);
plot(w/M*2,angle(h1hp));
%---Executes on button press in pushbutton9.function pushbutton9_Callback(hObject, eventdata, handles)% hObject handle to pushbutton9(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
%第七題(哈明窗)N=10;wn=1/3;
b3lp=fir1(N,wn,hamming(N+1));
b3hp=fir1(N,wn,'high',hamming(N+1));M=1024;w=0:(M-1);t=0:10;
h3lp=freqz(b3lp,1,w/M*2*pi);h3hp=freqz(b3hp,1,w/M*2*pi);figure;
subplot(3,2,1);stem(t,b3lp,'.');subplot(3,2,2);stem(t,b3hp,'.');subplot(3,2,3);
plot(w(1:(M/2))/M*2,abs(h3lp(1:(M/2))));subplot(3,2,4);
plot(w(1:(M/2))/M*2,abs(h3hp(1:(M/2))));subplot(3,2,5);
plot(w/M*2,angle(h3lp));subplot(3,2,6);
plot(w/M*2,angle(h3hp));
第二篇:中南大學數字信號處理課程設計報告2
中南大學
數字信號處理課程設計報告
專業班級:
指導老師:
姓
名:
學
號:
目
錄
一、課程設計要求
二、設計過程
(1)設計題目(2)設計源代碼(3)設計結果(4)結果分析
三、設計總結與心得體會
四、課程設計指導書
一、課程設計要求
1、課程設計指導書
①《數字信號處理(第二版)》,丁玉美等,西安電子科技大學出版社; ②《MATLAB 及在電子信息課程中的應用》,陳懷琛等,電子工業出版社。
2、課程設計內容: ⑴語音信號去噪處理 主要要求:
1)在windows系統下的錄音機錄制一段1s左右的語音信號作為原聲信號,在MATLAB軟件平臺下,利用函數wavread對語音信號進行采樣,記住采樣頻率和采樣點數;
2)畫出語音信號的時域波形,對采樣后的語音進行fft變換,得到信號的頻譜特性;對語音信號分別加入正弦噪聲和白噪聲,畫出加噪信號的時域波形和頻譜圖;
3)根據對加噪語音信號譜分析結果,確定濾除噪聲濾波器的技術指標,設計合適的數字濾波器,并畫出濾波器的頻域響應;
4)用所設計的濾波器對加噪的信號進行濾波,在同一個窗口畫出濾波前后信號的時域圖和頻譜圖,對濾波前后的信號進行對比,分析信號變化; 5)利用sound(x)回放語音信號,驗證設計效果。
⑵語音信號的延時和混響 主要要求:
1)利用Windows下的錄音機或其他軟件,錄制一段自己的語音信號,時間控制在1s左右,并對錄制的信號進行采樣;
2)語音信號的頻譜分析,畫出采樣后語音信號的時域波形和頻譜圖; 3)將信號加入延時和混響,再分析其頻譜,并與原始信號頻譜進行比較; 4)設計幾種特殊類型的濾波器:單回聲濾波器,多重回聲濾波器,全通結構的混響器,并畫出濾波器的頻域響應;
5)用自己設計的濾波器對采集的語音信號進行濾波;
6)分析得到信號的頻譜,畫出濾波后信號的時域波形和頻譜,并對濾波前后的信號進行對比,分析信號的變化; 7)回放語音信號。
⑶數字濾波器的設計及實現 主要要求:
1)調用信號產生函數mstg產生三路抑制載波調幅信號相加構成的復合信號st,觀察st的時域波形和幅頻特性曲線;
2)由要求將st中的三路調幅信號分離,通過觀察st的幅頻特性曲線,分別確定可以分離st中三路抑制載波單頻調幅信號的三個濾波器(低通濾波器、帶通濾波器、高通濾波器)的通帶截止頻率和阻帶截止頻率,要求濾波器的通帶最大衰減為0.1dB,阻帶最小衰減為60dB;
3)編程調用MATLAB濾波器設計函數分別設計這三個數字濾波器,并繪圖顯示其幅頻特性曲線;
4)調用濾波函數filter,用所設計的三個濾波器分別對復合信號st進行濾波,分離出st中的三路不同載波頻率的調幅信號,并繪圖顯示濾波后信號的時域波形和頻譜,觀察分離效果。
⑷心電信號的處理 主要要求:
1)在MATLAB軟件平臺下,給原始的心電信號疊加上噪聲或干擾,干擾類型分為如下幾種:白噪聲、工頻干擾(50Hz)、諧波干擾(二次、三次諧波為主,分別為100Hz、150Hz)繪出疊加噪聲后的心電信號時域和頻譜圖,在視覺上與原始心電信號圖形對比,分析頻域基本特征變化。
2)給定濾波器的規一化性能指標(參考指標,實際中依據每個同學所疊加噪聲情況而定),例如:通帶截止頻率wp=0.25*pi, 阻通帶截止頻率ws=0.3*pi;通帶最大衰減Rp=1 dB;阻帶最小衰減Rs=15 dB
3)采用窗函數法設計各型FIR濾波器(低通、高通、帶通、帶阻中的至少2種類型),來對疊加干擾前后的心電信號進行濾波處理,繪出濾波器的頻域響應及濾波后信號的時域波形和頻譜,并對濾波前后的信號進行對比,分析信號的變化;在相同的性能指標下比較各方法的濾波效果,并從理論上進行分析或解釋;
4)采用雙線性變換法利用不同的原型低通濾波器(Butterworth型與切比雪夫I型)來設計各型IIR濾波器(低通、高通、帶通、帶阻中的至少2種類型)繪出濾波器的頻域響應,并用這些數字濾波器對含噪心電信號分別進行濾波處理;比較不同方法下設計出來的數字濾波器的濾波效果,并從理論上進行分析或解釋;
5)心電信號波形觀察、頻譜觀察,對濾波后的心電信號觀察其時域、頻域特征變化。
3、具體要求
⑴、使用 MATLAB(或其它開發工具)編程實現上述內容,寫出課程設計報告。
⑵、課程設計報告的內容包括:
①課程設計題目和題目設計要求;
②設計思想和系統功能結構及功能說明;
③設計中關鍵部分的詳細描述和介紹,采用流程圖描述關鍵模塊的設計思路;
④總結,包括設計過程中遇到的問題和解決方法,心得體會等;
⑤參考文獻;
⑥程序源代碼清單。
4、考核方式
課程考核分三部分,一部分是上機率,占 20%;第二部分是檢查成績,最后兩次上機為
檢查時間,占 50%;第三部分為課程設計報告,占 30%。注意:
⑴、使用 GUI 界面或混合編程實現仿真程序,酌情加分; ⑵、若發現程序或課程設計報告雷同,一律不及格。⑶、主要參考資料
[1] S.K.Mitra.Digital Signal Processing: A Computer Based Approach, 3rd Edition [M], New York, USA: McGraw-Hill, 2000 [2] R.G.Lyons.Understanding Digital Signal Processing, 2nd Edition [M].New Jersey, USA: Prentice Hall, 2005 [3] 程佩青.數字信號處理教程, 第二版[M].北京: 清華大學出版社, 2001 [4] 趙樹杰等.數字信號處理[M].西安: 西安電子科技大學出版社, 1997 [5] 丁玉美等.數字信號處理—時域離散隨機信號處理[M].西安: 西安電子科技大學出版社, 2002 [6] 陳懷琛等.MATLAB 及在電子信息課程中的應用[M], 北京: 電子工業出版社出版, 2002 ⑷、課程設計進度安排
序號 階段內容 合計(天)一 設計準備 1 二 方案選擇及初步設計 2 三 目標項目設計實現及調試 3 四 撰寫課程設計報告 2 五 上機檢查成績 2 總計(2 周)10
二.設計過程
第一題、語音信號去噪處理
1.設計要求:
(1)在windows系統下的錄音機錄制一段1s左右的語音信號作為原聲信號,在MATLAB軟件平臺下,利用函數wavread對語音信號進行采樣,記住采樣頻率和采樣點數;
(2)畫出語音信號的時域波形,對采樣后的語音進行fft變換,得到信號的頻譜特性;對語音信號分別加入正弦噪聲和白噪聲,畫出加噪信號的時域波形和頻譜圖;
(3)根據對加噪語音信號譜分析結果,確定濾除噪聲濾波器的技術指標,設計合適的數字濾波器,并畫出濾波器的頻域響應;
(4)用所設計的濾波器對加噪的信號進行濾波,在同一個窗口畫出濾波前后信號的時域圖和頻譜圖,對濾波前后的信號進行對比,分析信號變化;(5)利用sound(x)回放語音信號,驗證設計效果。
2.設計步驟:
(1)找到7s的語音信號,利用函數wavread對語音信號進行信號讀取;(2)計算樣本時刻和頻譜圖的頻率,并進行N+1點FFT變換;(3)加噪聲為5000Hz的正弦信號正弦噪聲,采用awgn函數加信噪比為10的高斯白噪聲;
(4)設計濾波器;
(5)繪出相應的時域、頻域圖;
(6)利用sound函數進行原始信號的語音播放,加噪聲音播放,以及濾波之后的語言播放。
3.設計實現:
(1)時域圖與頻譜圖(加正弦)
錄入原始信號的時域圖:
加入正弦信號后的時域圖: 濾波后的時域圖:
錄入原始信號的頻域圖:
加入正弦信號后的頻率圖:
濾波后的頻域圖:
采用巴斯低通濾波器濾除正弦波:
(2)具體代碼實現:
[x,fs,bits]=wavread('E:mcpass.wav');%原信號
n=size(x,1);
%提取采樣信號的長度 t=(0:length(x)-1)/fs;
%計算樣本時刻
f=fs*(0:(n+1)/2-1)/n+1;
%計算頻域圖的頻率
X=fft(x,n+1);
%進行N+1點FFT變換
ts=0:1/fs:(size(x)-1)/fs;
%將所加噪聲信號的點數調整到與原始信號相同 s=x+0.05*sin(2*pi*5000*ts)';
%加噪聲為5000Hz的正弦信號正弦噪聲 S=fft(s,n+1);
%加正弦噪聲后的頻域 %正弦濾波
wp=2000/fs*2*pi;
%2000為通帶截止頻率
ws=3000/fs*2*pi;
%3000為阻帶下限截止頻率
Rp=4;
%通帶波紋
Rs=25;
%阻帶波紋
T=1/fs;Fs=1/T;
%定義采樣間隔
Wp=2/T*tan(wp/2);
%計算對應的數字頻率
Ws=2/T*tan(ws/2);[N,wn]=buttord(Wp,Ws,Rp,Rs,'s');
%計算濾波器介數和截止頻率
[c,d]=butter(N,wn,'s');
%計算濾波器系統函數分子分母系數
[B,A]=bilinear(c,d,Fs);
%雙線性變換得到數字濾波器系統函數分子分母系數 [Hb,Wc]=freqz(B,A);sf=filter(B,A,s);
%對加噪信號進行濾波
Sf=fft(sf,n+1);
%對濾波后進行N+1點FFT變換
%繪圖部分 figure(3);plot(fs*Wc/(2*pi),20*log10(abs(Hb)));title('巴斯低通濾波器頻域響應圖');xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(3,1,1);plot(t,x);title('原信號時域')xlabel('時間(s)');ylabel('幅度');figure(2);subplot(3,1,1);plot(f,abs(X(1:(n+1)/2)));title('原信號頻域')xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(3,1,2);plot(t,s);title('加正弦信號后的時域')xlabel('時間(s)');ylabel('幅度');figure(2);subplot(3,1,2);plot(f,abs(S(1:(n+1)/2)));title('加正弦信號后的頻域圖')xlabel('頻率(Hz)');ylabel('幅度');figure(1)subplot(3,1,3);plot(t,sf);title('濾波后的時域圖');xlabel('時間(s)');ylabel('幅度');figure(2)subplot(3,1,3);plot(f,abs(Sf(1:(n+1)/2)));title('濾波后的頻域圖');xlabel('頻率(Hz)');ylabel('幅度');sound(x);sound(s);sound(sf);
(3)時域圖與頻域圖(加白噪聲)
加白噪聲后的時域圖和濾除之后的時域圖:
加白噪聲和濾除之后的頻域圖:
采用blackman函數濾波:
具體代碼實現:
[x,fs,bits]=wavread('E:hbsong.wav');N=size(x,1);t=(0:length(x)-1)/fs;f=fs*(0:(N+1)/2-1)/N+1;X=fft(x,N+1);%加高斯白噪聲
z=awgn(x,20);
%對信號加信噪比為10的高斯白噪聲 N1=size(z,1);
%提取采樣信號的長度 t=(0:length(z)-1)/fs;
%計算樣本時刻 f=fs*(0:(N1+1)/2-1)/N1+1;Z=fft(z,N1+1);Wp=2500/fs*2*pi;Ws=3000/fs*2*pi;
%計算對應的數字頻率 B=Ws-Wp;n=ceil(1*pi/B);wc=(Wp+Ws)/2;b=fir1(n-1,wc/pi,'stop',blackman(n));%blackman窗函數濾波 [H,w]=freqz(b,1);y=fftfilt(b,z);
t1=(0:length(y)-1)/fs;
Y=fft(y,N1+1);subplot(2,2,1);
plot(t,z);title('加高斯白噪聲后時域圖');subplot(2,2,2);plot(f,abs(Z(1:(N1+1)/2)));title('濾波前信號頻譜圖')figure
plot(fs*w/(2*pi),20*log10);title('blackman函數頻域響應圖');title('頻率響應')xlabel('頻率(Hz)');ylabel('幅度');subplot(2,2,3);
plot(t1,y)title('濾波后信號時域圖');xlabel('時間(s)');ylabel('幅度');subplot(2,2,4);plot(f,abs(Y(1:(N1+1)/2)));title('濾波后信號頻譜圖')xlabel('頻率(Hz)');ylabel('幅度');
sound(y,fs)
第二題、語音信號的延時和混響
1.設計要求:
(1)利用Windows下的錄音機或其他軟件,錄制一段自己的語音信號,時間控制在1s左右,并對錄制的信號進行采樣;
(2)語音信號的頻譜分析,畫出采樣后語音信號的時域波形和頻譜圖; 將信號加入延時和混響,再分析其頻譜,并與原始信號頻譜進行比較;
(3)設計幾種特殊類型的濾波器:單回聲濾波器,多重回聲濾波器,全通結構的混響器,并畫出濾波器的頻域響應;
(4)用自己設計的濾波器對采集的語音信號進行濾波;
(5)分析得到信號的頻譜,畫出濾波后信號的時域波形和頻譜,并對濾波前后的信號進行對比,分析信號的變化;(6)回放語音信號。
2.設計步驟:
(1)錄入原始聲音信號;
(2)計算樣本時刻和頻譜圖的頻率,并進行N+1點FFT變換;(3)加入單回聲;
(4)設計單回聲濾波器幅頻響應函數;(5)繪出相應時域與頻域圖;
(6)利用sound函數進行原始信號的語音播放,加單回聲后語言播放,以及濾除之后的語言播放;
3.設計實現:
(1)時域圖和頻域圖(加單回聲)
原始信號時域圖:
濾波后的時域圖:
原始信號頻域圖:
濾波后頻域圖:
單回聲濾波器幅頻響應:
(2)具體代碼實現(單回聲):
[x,fs,bits]=wavread('E:mcpass.wav');%原聲音信號 n=size(x,1);t=(0:length(x)-1)/fs;f=fs*(0:(n+1)/2-1)/n+1;X=fft(x,n+1);a=0.6;%單回聲濾波 R=fs*a;B=[1,zeros(1,R-2),a];A=[1,zeros(1,R-1)];y = filter(B,A,x);Y=fft(y,n+1);[H,W]=freqz(B,A);
%求單回聲濾波器幅頻響應函數 %繪圖部分 figure(2);plot(fs*W/(2*pi),20*log10(abs(H)));title('頻率響應');xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,1);plot(t,x);title('原信號時域');xlabel('時間(s)');ylabel('幅度');subplot(4,1,2);plot(f,abs(X(1:(n+1)/2)));title('原信號頻域');xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,3);plot(t,y);title('濾波后時域圖');xlabel('時間(s)');ylabel('幅度');figure(1);subplot(4,1,4);plot(f,abs(Y(1:(n+1)/2)));title('濾波后頻域圖');xlabel('頻率(Hz)');ylabel('幅度');sound(x,fs,bits);sound(y,fs,bits);
(3)時域圖與頻域圖(多重回聲)
原始信號時域圖與多重信號時域圖:
原始信號時域圖與多重信號頻域圖:
多重回聲濾波器幅頻響應:
(4)具體代碼實現(多回聲)
%原聲音信號
[x,fs,bits]=wavread('E:mcpass.wav');N=size(x,1);t=(0:length(x)-1)/fs;f=fs*(0:(N+1)/2-1)/N+1;%多重回聲 a=0.5;R=fs*a;B=[1,zeros(1,R-2)];A=[1,zeros(1,R-1),a];yd = filter(B,A,x);
%濾波器函數 %頻率響應
[Hb,Wc]=freqz(B,A);
%求多重回聲濾波器幅頻響應函數 %繪圖部分 figure(2);plot(fs*Wc/(2*pi),20*log10(abs(Hb)));title('多重濾波器頻域響應圖')xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,1);plot(t,x);title('原信號時域');xlabel('時間(s)');ylabel('幅度');X=fft(x,N+1);subplot(4,1,3);plot(f,abs(X(1:(N+1)/2)));title('原信號頻域');xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,2);plot(t,yd);title('多重信號時域圖')xlabel('時間(s)');ylabel('幅度');Yd=fft(yd,N+1);
%多重回聲濾波后信號FFT變換 subplot(4,1,4);plot(f,abs(Yd(1:(N+1)/2)));title('多重信號頻域圖');xlabel('頻率(Hz)');ylabel('幅度');sound(x);sound(yd);
(5)時域圖與頻域圖(全通濾波器)
原始信號時域圖與全通濾波器時域圖:
原始信號時域圖與全通濾波器頻域圖:
全通濾波器的頻域響應圖:
(6)具體代碼實現(全通濾波器):
%原聲音信號
[x,fs,bits]=wavread('E:mcpass.wav');N=size(x,1);t=(0:length(x)-1)/fs;f=fs*(0:(N+1)/2-1)/N+1;%全通結構混響 a=0.5;R=fs*a;B=[a,zeros(1,R-2),1];A=[1,zeros(1,R-2),a];yd = filter(B,A,x);%頻率響應
[Hb,Wc]=freqz(B,A);
%求全通濾波器幅頻響應函數 figure(2);plot(fs*Wc/(2*pi),20*log10(abs(Hb)));title('全通結構頻域響應圖')xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,1);plot(t,x);title('原信號時域');xlabel('時間(s)');ylabel('幅度');X=fft(x,N+1);subplot(4,1,3);plot(f,abs(X(1:(N+1)/2)));title('原信號頻域');xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,2);plot(t,yd);title('全通濾波器時域圖');xlabel('時間(s)');ylabel('幅度');Yd=fft(yd,N+1);subplot(4,1,4);plot(f,abs(Yd(1:(N+1)/2)));title('全通濾波器頻域圖');xlabel('頻率(Hz)');ylabel('幅度');sound(x);sound(yd);(7)時域圖與頻域圖(延時與混響)
原始信號時域圖:
延時時域圖:
混響時域圖:
原始信號頻域:
延時信號頻域圖:
混響信號頻域圖:
(8)具體代碼實現(延時與混響):
[x,fs,bits]=wavread('E:mcpass.wav');N=size(x,1);t=(0:length(x)-1)/fs;f=fs*(0:(N+1)/2-1)/N+1;xd=[zeros(300,1);x];%信號延時 td=(0:length(xd)-1)/fs;Xd=fft(xd);
Xd1=fftshift(Xd);
dFs =fs/length(xd);
xd1=[x;zeros(300,1)];%信號混響 x1=xd1+xd;Xhun=fft(x1);%混響信號fft變換
Xh2=fftshift(x1);%平移,中心為0頻率 dFs = fs/length(x1);%繪圖部分 figure(1);subplot(4,1,1);plot(t,x);title('原信號時域');xlabel('時間(s)');ylabel('幅度');X=fft(x,N+1);subplot(4,1,2);plot(f,abs(X(1:(N+1)/2)));title('原信號頻域');xlabel('頻率(Hz)');ylabel('幅度');subplot(4,1,3);
plot(td,xd);title('延時信號時域圖')xlabel('時間(s)');ylabel('幅度');subplot(4,1,4);
plot([-fs/2:dFs: fs/2-dFs],abs(Xd));title('延時信號頻域圖')xlabel('頻率(Hz)');ylabel('幅度');figure(2);subplot(2,1,1);plot(td,x1);title('混響信號時域圖');xlabel('時間(s)');ylabel('幅度');figure(2);subplot(2,1,2);plot([-fs/2:dFs: fs/2-dFs],abs(Xh2));title('混響信號頻域圖');xlabel('頻率(Hz)');ylabel('幅度');sound(x);sound(xd);sound(x1);第三題、數字濾波器的設計及實現
1.設計要求:
(1)調用信號產生函數mstg產生由三路抑制載波調幅信號相加構成的復合信號st,觀察st的時域波形和幅頻特性曲線;
(2)要求將st中的三路調幅信號分離,通過觀察st的幅頻特性曲線,分別確定可以分離st中三路抑制載波單頻調幅信號的三個濾波器(低通濾波器、帶通濾波器、高通濾波器)的通帶截止頻率和阻帶截止頻率,要求濾波器的通帶最大衰減為0.1dB,阻帶最小衰減為60dB;(3)編程調用MATLAB濾波器設計函數分別設計這三個數字濾波器,并繪圖顯示其幅頻特性曲線;
(4)調用濾波函數filter,用所設計的三個濾波器分別對復合信號st進行濾波,分離出st中的三路不同載波頻率的調幅信號,并繪圖顯示濾波后信號的時域波形和頻譜,觀察分離效果。
2.設計步驟:
(1)產生三路調幅信號;
(2)三路信號相加組成復合信號;
(3)分別設計低通、帶通、高通濾波器,對三路信號濾波;(4)繪出相應的時域、頻域圖;(5)觀察分離效果;
3.設計實現:
(1)時域圖與頻域圖(第一路):
第二路:
第三路:
4.具體代碼實現:
N=1600;
%N為信號st的長度。
Fs=10000;T=1/Fs;Tp=N*T;%采樣頻率Fs=10kHz,Tp為采樣時間 t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;fc1=Fs/10;
%第1路調幅信號的載波頻率fc1=1000Hz, fm1=fc1/10;
%第1路調幅信號的調制信號頻率fm1=100Hz fc2=Fs/20;
%第2路調幅信號的載波頻率fc2=500Hz fm2=fc2/10;
%第2路調幅信號的調制信號頻率fm2=50Hz fc3=Fs/40;
%第3路調幅信號的載波頻率fc3=250Hz, fm3=fc3/10;
%第3路調幅信號的調制信號頻率fm3=25Hz xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);%產生第1路調幅信號 xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%產生第2路調幅信號 xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%產生第3路調幅信號 st=xt1+xt2+xt3;
%三路調幅信號相加 fxt=fft(st,N);
%計算信號st的頻譜 figure(1);subplot(2,1,1);plot(t,st);title('三路調幅信號時域圖')grid;xlabel('t/s');ylabel('s(t)');axis([0,Tp/2,min(st),max(st)]);title('(a)s(t)的波形');subplot(2,1,2);stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的頻譜');axis([0,Fs/5,0,1.2]);xlabel('f/Hz');ylabel('幅度');
Fs=10000;T=1/Fs;
%采樣頻率
%調用信號產生函數mstg產生由三路抑制載波調幅信號相加構成的復合信號st
%低通濾波器設計與實現
fp=280;fs=450;wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60;
[N,wp]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N,rp,rs,wp);
y1t=filter(B,A,st);
[Hb,Wc]=freqz(B,A);
figure(2);subplot(2,1,1);plot(Fs*Wc/(2*pi),20*log10(abs(Hb)));title('低通濾波器頻域響應圖')subplot(2,1,2);plot(t,y1t);title('第一路低頻信號時域圖')
%帶通濾波器設計與實現
fpl=440;fpu=560;fsl=275;fsu=900;wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];rp=0.1;rs=60;[N,wp]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wp);y2t=filter(B,A,st);[Hb1,Wc1]=freqz(B,A);figure(3);subplot(2,1,1);plot(Fs*Wc1/(2*pi),20*log10(abs(Hb1)));title('帶通濾波器頻域響應圖')subplot(2,1,2);plot(t,y2t);title('第二路中頻信號時域圖')
%高通濾波器設計與實現 fp=890;fs=600;wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60;
%DF指標(低通濾波器的通、阻帶邊界頻)[N,wp]=ellipord(wp,ws,rp,rs);
%調用ellipord計算橢圓DF階數N和通帶截止頻率wp [B,A]=ellip(N,rp,rs,wp,'high');%調用ellip計算橢圓帶通DF系統函數系數向量B和A y3t=filter(B,A,st);
%濾波器軟件實現 [Hb2,Wc2]=freqz(B,A);figure(4);subplot(2,1,1);plot(Fs*Wc2/(2*pi),20*log10(abs(Hb2)));title('高通濾波器頻域響應圖')subplot(2,1,2);plot(t,y3t);title('第三路高頻信號時域圖')第四題、心電信號的處理
1.設計要求:
(1)在MATLAB軟件平臺下,給原始的心電信號疊加上噪聲或干擾,干擾類型分為如下幾種:白噪聲、工頻干擾(50Hz)、諧波干擾(二次、三次諧波為主,分別為100Hz、150Hz)繪出疊加噪聲后的心電信號時域和頻譜圖,在視覺上與原始心電信號圖形對比,分析頻域基本特征變化。
(2)給定濾波器的規一化性能指標(參考指標,實際中依據每個同學所疊加噪聲情況而定),例如:通帶截止頻率wp=0.25*pi, 阻通帶截止頻率ws=0.3*pi;通帶最大衰減Rp=1 dB;阻帶最小衰減Rs=15 dB
(3)采用窗函數法設計各型FIR濾波器(低通、高通、帶通、帶阻中的至少2種類型),來對疊加干擾前后的心電信號進行濾波處理,繪出濾波器的頻域響應及濾波后信號的時域波形和頻譜,并對濾波前后的信號進行對比,分析信號的變化;在相同的性能指標下比較各方法的濾波效果,并從理論上進行分析或解釋;(4)采用雙線性變換法利用不同的原型低通濾波器(Butterworth型與切比雪夫I型)來設計各型IIR濾波器(低通、高通、帶通、帶阻中的至少2種類型)繪出濾波器的頻域響應,并用這些數字濾波器對含噪心電信號分別進行濾波處理;比較不同方法下設計出來的數字濾波器的濾波效果,并從理論上進行分析或解釋;
(5)心電信號波形觀察、頻譜觀察,對濾波后的心電信號觀察其時域、頻域特征變化。
2.設計步驟:
(1)讀取原始心電信號;
(2)心電信號加50HZ工頻信號;(3)心電信號加入諧波;(4)心電信號加入白噪聲;
(5)設計相應的濾波器進行不同噪聲的濾除;(6)繪出相應的時域頻域圖;
3.設計實現:
(1)各時域頻域圖:
原始心電信號時域圖以及加入個噪聲后的時域圖:
原始心電信號頻域圖以及加入個噪聲后的時頻域圖:
(2)具體代碼實現:
%原心電信號
xl=load('E:心電信號-新.txt');x=xl(:,2);N=size(x,1);fs=1000;t=(0:length(x)-1)/fs;f=fs/N*(0:(N+1)/2-1)+1;X=fft(x,N);%加50hz工頻干擾 y=x+sin(2*50*pi*t)';Y=fft(y,N);%加100hz、150hz諧波干擾
y1=x+sin(2*100*pi*t)'+cos(2*150*pi*t)';Y1=fft(y1,N);%加白噪聲 yb=awgn(x,20);Yd=fft(yb,N);figure(1);subplot(4,1,1);plot(t,x);title('原信號時域圖')xlabel('時間(s)');ylabel('幅度');figure(2);subplot(4,1,1)plot(f,abs(X(1:(N+1)/2)));title('原信號頻域圖')xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,2);plot(t,y);title('加50hz工頻信號時域圖')xlabel('時間(s)');ylabel('幅度');figure(2);subplot(4,1,2);plot(f,abs(Y(1:(N+1)/2)));title('加50hz工頻信號頻域圖')xlabel('頻率(Hz)');ylabel('幅度');figure(1)subplot(4,1,3);plot(t,y1);title('加諧波后的時域圖')xlabel('時間(s)');ylabel('幅度');figure(2)subplot(4,1,3);plot(f,abs(Y1(1:(N+1)/2)));title('加諧波后的頻域圖')xlabel('頻率(Hz)');ylabel('幅度');figure(1);subplot(4,1,4);plot(t,y1);title('加白噪后的時域圖');figure(2);subplot(4,1,4);plot(f,abs(Y1(1:(N+1)/2)));title('加白噪后的頻域圖');
(3)濾除部分:
濾除50HZ信號后的時域圖(blackman低通濾波器):
濾除50HZ信號后的頻域圖: blackman低通濾波器濾波:
具體代碼:
%原心電信號
xl=load('E:心電信號-新.txt');x=xl(:,2);N=size(x,1);fs=1000;t=(0:length(x)-1)/fs;f=fs/N*(0:(N+1)/2-1)+1;%f=fs/N*(0:N-1);X=fft(x,N);%加50hz工頻干擾 y=x+sin(2*50*pi*t)';Y=fft(y,N);%blackman低通濾波器 wp=30/fs*pi;ws=40/fs*pi;B=ws-wp;M=ceil(12*pi/B)-1;bl=fir1(M,(ws+wp)/2/pi,'low',blackman(M+1));yl=fftfilt(bl,y);Yl=fft(yl,N);figure(1);subplot(3,1,1);plot(t,x);title('原信號時域圖')figure(2);subplot(3,1,1)plot(f,abs(X(1:(N+1)/2)));%plot(f,abs(X));title('原信號頻域圖')figure(1);subplot(3,1,2);plot(t,y);title('加50hz工頻信號時域圖')figure(2);subplot(3,1,2);plot(f,abs(Y(1:(N+1)/2)));%plot(f,abs(Y));title('加50hz工頻信號頻域圖')figure(1);subplot(3,1,3);plot(t,yl);title('濾波后信號時域圖')figure(2)subplot(3,1,3);plot(f,abs(Yl(1:(N+1)/2)));%plot(f,abs(Yl));title('濾波后信號頻域圖')figure(3)[h2,w2]=freqz(bl,1);plot(w2/(2*pi)*fs,20*log10(abs(h2)));title('blackman低通濾波器頻率響應圖');
濾除50HZ信號后的時域圖(切比雪夫濾波器):
濾除50HZ信號后的頻域圖(切比雪夫濾波器):
切比雪夫濾波器:
具體代碼實現:
%原心電信號
xl=load('E:心電信號-新.txt');x=xl(:,2);N=size(x,1);fs=1000;t=(0:length(x)-1)/fs;f=fs/N*(0:(N+1)/2-1)+1;X=fft(x,N);%加50hz工頻干擾 y=x+sin(2*50*pi*t)';Y=fft(y,N);%切比雪夫濾波器
wp=20/fs*2*pi;ws=30/fs*2*pi;wp1=2*fs*tan(wp/2);ws1=2*fs*tan(ws/2);Rp=1;Rs=15;[N1,w]=cheb1ord(wp1,ws1,Rp,Rs,'s');[B1,A1]=cheby1(N1,1,w,'low','s');[B,A]=bilinear(B1,A1,fs);[Hk,wk]=freqz(B,A);yf=filter(B,A,y);Yf=fft(yf,N);figure(1);subplot(3,1,1);plot(t,x);title('原信號時域圖')figure(2);subplot(3,1,1)plot(f,abs(X(1:(N+1)/2)));title('原信號頻域圖')figure(1);subplot(3,1,2);plot(t,y);title('加50hz工頻信號時域圖')figure(2);subplot(3,1,2);plot(f,abs(Y(1:(N+1)/2)));title('加50hz工頻信號頻域圖')figure(1);subplot(3,1,3)plot(t,yf);title('濾波后信號時域圖')figure(2);subplot(3,1,3)plot(f,abs(Yf(1:(N+1)/2)));title('濾波后信號頻域圖')figure(3)plot(fs*wk/(2*pi),20*log10(abs(Hk)));title('切比雪夫濾波器頻域響應圖');
濾除白噪聲后的時域圖(blackman低通濾波器):
濾除白噪聲后的頻域圖(blackman低通濾波器):
blackman低通濾波器:
具體代碼實現:
%原心電信號
xl=load('E:心電信號-新.txt');x=xl(:,2);N=size(x,1);fs=1000;t=(0:length(x)-1)/fs;f=fs/N*(0:(N+1)/2-1)+1;X=fft(x,N);%加白噪聲 yb=awgn(x,20);Yd=fft(yb,N);%blackman低通濾波器 wp=70/fs*pi;ws=90/fs*pi;Bl=ws-wp;Ml=ceil(12*pi/Bl)-1;bl=fir1(Ml,(ws+wp)/2/pi,'low',blackman(Ml+1));yl=fftfilt(bl,y1);Yl=fft(yl,N);%繪圖部分 figure(1);subplot(3,1,1);plot(t,x);title('原信號時域圖')figure(2);subplot(3,1,1)plot(f,abs(X(1:(N+1)/2)));title('原信號頻域圖')figure(1);subplot(3,1,2);plot(t,y1);title('加白噪后的時域圖');figure(2);subplot(3,1,2);plot(f,abs(Y1(1:(N+1)/2)));title('加白噪后的頻域圖');figure(1);subplot(3,1,3);plot(t,yl);title('濾波后信號時域圖')figure(2)subplot(3,1,3);plot(f,abs(Yl(1:(N+1)/2)));%plot(f,abs(Yl));title('濾波后信號頻域圖')figure(3)[h2,w2]=freqz(bl,1);plot(w2/(2*pi)*fs,20*log10(abs(h2)));title('blackman低通濾波器頻率響應圖');
三、設計總結與心得體會
在課程設計的這段時間,我獲益匪淺。不但進一步掌握了數字信號處理的基礎知識及MATLAB的基本操作,還使我了解了信號的產生、采樣及頻譜分析的方法。我進一步了解到凡事都需要耐心,細心仔細是成功的保證。雖然在做的過程中遇到了一些問題,但是我都通過自己的努力解決了它們,證明了自己的能力。這次課程設計對我各方面的綜合能力有了很大的提高,對我以后的工作,實踐都有很大的幫助。
在此次課程設計當中,我經常把C語言的語法知識照搬到MATALAB設計中,從而導致調試失敗,所以下次用此類語言做課程設計時,應事先學習下這類語言的基本語法,以免與其他語言相混淆。還有就是有些不定參數存在時,可先取定值,用于調試,這樣可以節約調試時間,從而提高效率。
本次課程設計不但讓我又學到了一些知識,而且也提高了我的綜合能力。使我在各個方面都得到了鍛煉,以后有這樣的機會一定會更加的很好利用,它不僅可以提高學習的針對性而且可以很好的鍛煉動手能力以及自己的邏輯設計能力和處理問題的能力,希望在以后這方面的能力會很好的加強。
四、課程設計指導書
[1] 《數字信號處理(第二版)》.丁玉美等 西安電子科技大學出版社 [2] 《數字信號處理及其MATLAB實現》,陳懷琛等譯,電子工業出版社; [3] 《MATLAB及在電子信息課程中的應用》,陳懷琛等,電子工業出版社
第三篇:中南大學《數字信號處理》課程設計報告
中南大學
《現代信號處理》 課程設計報告
學 院: 專業班級:
姓 名:
學 號:
指導老師:
設計時間:
前 言
《現代信號處理》課程設計與《現代信號處理》課程配套,是通信工程類專業的重要實踐環節。數字信號處理是每一個電子信息科學工作者必須掌握的重要知識。它采用計算機仿真軟件,以數值計算的方法對信號進行分析、變換、濾波、檢測、估計與識別等加工處理,以達到提取信息便于使用的目的。
通信工程專業的培養目標是具備通信技術的基本理論和應用技術,能從事電子、信息、通信等領域的工作。鑒于我校充分培養學生實踐能力的辦學宗旨,對本專業學生的培養要進行工程素質培養、拓寬專業口徑、注重基礎和發展潛力。特別是培養學生的創新能力,以實現技術為主線多進行實驗技能的培養。學生通過《現代信號處理》課程設計這一重要環節,可以將本專業的主干課程《現代信號處理》從理論學習到實踐應用,對數字信號處理技術有較深的了解,進一步增強學生動手能力和適應實際工作的能力。
目 錄
前 言............................................................2 第一章 設計目的及要求.............................................4
1.1 課程設計目的................................................4 1.2 課程設計要求................................................4 1.3 課程設計選做題目............................................4 第二章 設計題目及思想.............................................5
2.1 各題目的設計思想............................................5
2.1.1 第一題................................................5 2.1.2 第二題...............................................6 2.1.3 第三題...............................................6 2.1.4 第四題...............................................7 2.1.5 第五題...............................................7 2.1.6 第六題...............................................8 2.2 GUI界面設計思想............................................9 第三章 調試及結果分析............................................12 3.1 GUI界面的結果與調試.......................................12 3.2 各題目的結果與調試.........................................12 3.2.1 第一題...............................................12 3.2.2 第二題...............................................13 3.2.3 第三題...............................................14 3.2.4 第四題...............................................15 3.2.5 第五題...............................................16 3.2.6 第六題...............................................21 第四章 課程設計總結..............................................24 4.1 課程設計所遇問題及解決方案.................................24 4.2 課程設計心得體會...........................................25 附錄:............................................................26 參考文獻..........................................................35 第一章 設計目的及要求
1.1 課程設計目的
1.全面復習課程所學理論知識,鞏固所學知識重點和難點,將理論與實踐很好地結合起來。
2.掌握信號分析與處理的基本方法與實現
3.提高綜合運用所學知識獨立分析和解決問題的能力; 4.熟練使用一種高級語言進行編程實現。
1.2 課程設計要求
一、使用MATLAB(或其它開發工具)編程實現上述內容,寫出課程設計報告。濾波器設計題目應盡量避免使用現成的工具箱函數。為便于分析與觀察,設計中所有頻譜顯示中的頻率參數均應對折疊頻率歸一化。
二、課程設計報告的內容包括:
(1)課程設計題目和題目設計要求;(2)設計思想和系統功能分析;
(3)設計中關鍵部分的理論分析與計算,關鍵模塊的設計思路;(4)測試數據、測試輸出結果,及必要的理論分析和比較;
(5)總結,包括設計過程中遇到的問題和解決方法,設計心得與體會等;(6)參考文獻;(7)程序源代碼清單。
三、課程設計考核要求:
課程考核分三部分,一部分是上機率,占20%;第二部分是檢查成績,最后兩次上機為檢查時間,占50%;第三部分為課程設計報告,占30%。注意:
(1)演示系統使用GUI界面或混合編程實現集成打包發布,酌情加分。(2)若發現程序或課程設計報告雷同,一律不及格。
1.3 課程設計選做題目
選題1.音樂信號處理:
1)獲取一段音樂或語音信號,設計單回聲濾波器,實現信號的單回聲產 生。給出加入單回聲前后的信號頻譜。
2)設計多重回聲濾波器,實現多重回聲效果。給出加入多重回聲后的信號頻譜。
3)設計均衡器,使得得不同頻率的混合音頻信號,通過一個均衡器后,增強或削減某些頻率區域。
選題二.對混有噪聲的音樂信號進行濾波:
1)在一段音樂信號中混入兩個頻率的正弦型干擾信號,利用FFT計算該混合信號的頻譜并確定干擾信號的頻譜;
2)利用二階帶阻濾波器設計一個能濾出干擾信號的梳狀濾波器; 3)利用梳狀濾波器濾除信號中的噪聲,播放處理前后的信號,并比較處理前后的結果
本次課程設計共有6道必做題目,并且我們并沒有系統的學過MATLAB,所以我并沒有做選做題。
第二章 設計題目及思想
2.1 各題目的設計思想
2.1.1 第一題
一、題目:
1.給定模擬信號:xa(t)?e?1000t
1)選擇采樣頻率Fs = 5000Hz和合適的信號長度,采樣得到序列 x1(n)。求并畫出x1(n)及其序列傅里葉變換 |X1(ejw)|。
2)選擇采樣頻率Fs = 1000Hz和合適的信號長度,采樣得到序列 x2(n)。求并畫出x2(n)及其序列傅里葉變換 |X2(ejw)|。3)說明|X1(ejw)|與|X2(ejw)|間的區別,為什么?
二、思想:
第一題主要的考查點是對連續時間信號的抽樣,對抽樣信號進行傅里葉變換以及不同采樣頻率對幅頻特性曲線的影響等。主要的理論依據如下:
(1)對連續時間信號的抽樣:設連續時間信號為x(t),則對其采樣得到的離散時間信號為x(n)=x(nT),T為采樣周期;
(2)離散時間信號的傅里葉變換:X(e)?FT[x(n)]?j?
由于抽樣后的離散時間信號題目沒有給出,故應先對連續信號做抽樣,后再對離散時間信號進行傅里葉變換。本次我直接采用輸入公式的方式進行傅里葉變換。
n????x(n)e??j?n。
2.1.2 第二題
一、題目:
2.已知兩系統分別用下面差分方程描述:
y1(n)?x(n)?x(n?1)
y2(n)?x(n)?x(n?1)
試分別寫出它們的傳輸函數,并分別打印H(ejw)~w曲線。說明這兩個系統的區別。
二、思想:
第二題的主要考查點是由系統的方程得出系統的傳輸函數。而在MATLAB中有freqz函數可直接求出系統的傳輸函數,然后由abs函數以及angle函數可得出其幅頻相頻特性曲線。
2.1.3 第三題
一、題目:
3.已知已調信號x(t)?cos(?t)cos(9?t),其中調制信號cos(?t),載波為cos(9?t)。
1)選擇合適的采樣頻率及信號長度,使用FFT分析該已調信號的頻譜并畫出其幅頻特性和相頻特性曲線圖。2)對該已調信號進行解調,恢復原調制信號。
二、思想:
第三題的主要考查點是信號的調制與解調。這屬于通信原理的主要原理知識。本題第一問需要使用FFT分析已調信號的頻譜特性,在MATLAB中FFT可以直接作為函數調用,所以我選擇直接調用FFT對其進行分析。第二問中要 對已調信號進行解調。其主要思想是解調已調信號需要先將已調信號乘以載波后選擇適當的濾波器進行濾波,將其多余信號濾除。
2.1.4 第四題
一、題目:
4.已知三角波序列x1(n)和反三角波序列x2(n):
?n?1,0?n?3?4?n,0?n?3??x1(n)??8?n,4?n?7 x2(n)??n?3,4?n?7
?0,?0,其它其它??用N=8點FFT分析序列x1(n)和x2(n)的幅頻特性,觀察兩者的序列形狀和頻譜特性曲線有什么異同?繪出兩序列及其幅頻特性曲線。在x1(n)和x2(n)的末尾補零,用N=16點FFT分析這兩個信號的幅頻特性,觀察幅頻特性發生了什么變化?兩情況的FFT頻譜還有相同之處嗎?這些變化說明了什么?
二、思想:
第四題的主要考查點是FFT快速傅里葉變換的用法。而這在MATLAB中,FFT可以直接作為函數調用,所以我選擇用FFT快速傅里葉變換進行分析三角波序列。不過首先要將三角波以及反三角波的取值范圍和函數值計算出來,后才可直接對序列進行FFT變換并分析其頻譜特性。
2.1.5 第五題
一、題目:
5.設有一信號x(n)=1+cos(n)+cos(4?2?n),設計各種IIR數字濾波器以實現: 31)低通濾波器,濾除cos(2??n)的成分,保留成分1+cos(n)342)高通濾波器,濾除1+cos(n)的成分,保留成分cos(4?2?n)33)帶通濾波器,濾除1+cos(?2??n)的成分,保留成分cos(n)342?n)34)帶阻濾波器,濾除cos(n)的成分,保留成分1+cos(4要求:1)求出各個濾波器的階數,設計各濾波器。畫出各濾波器的幅頻和相 頻特性,計算濾波器的系統函數H(z)。2)畫出濾波前后信號的時域、頻域波形。
二、思想:
第五題的主要考查點是用IIR雙線性變換法設計BW類型(低通、高通、帶通以及帯阻)數字濾波器。
其主要理論依據如下:(1)正切變換實現頻率壓縮:
??2tan(?1T/2)/T
(2)雙線性變換:
s?(2/T)[(1?z?1)(1?z?1)]
或
z?(2/T?s)/(2T/? s
(3)將所需數字濾波器的邊界頻率轉換成相應類型的模擬濾波器的邊界頻率公式為:
??(2/T)tan(?/2)
其設計主要按照課中所學濾波器設計的步驟進行分步設計。但由于其系統函數的公式無法直接輸入,故采用buttord函數進行巴特沃斯濾波器的方法分析所給參數計算出其系統函數的系數矩陣。再借由系統函數的系數矩陣得出具體的系統函數。得出系統函數后便可得到相應的階數以及幅頻、相頻特性。
濾波前的信號頻域波形由先對時域波形進行FFT變換后得出。對原信號的濾波則采用直接調用filter函數進行對原函數的濾波,而頻域波形同樣經由先FFT變換分析后得出。
2.1.6 第六題
一、題目:
6.1)用Hanning窗設計一線性相位帶通數字濾波器,要求:N=15。觀察它的實際3dB和20dB帶寬。N=45,重復這一設計,觀察幅頻和相位特性的變化,注意長度N變化的影響;
2)分別改用矩形窗和Blackman窗,設計(1)中的帶通濾波器,觀察并記錄窗函數對濾波器幅頻特性的影響,比較三種窗的特點;總結窗的不同長度和不同窗對濾波器的影響
二、思想:
第六題的主要考查點是幾種主要的窗函數(矩形窗、漢寧窗、哈明窗等)對離散時間信號的截取,并用FFT對其頻譜進行分析。其主要理論依據如下:
(1)矩形窗(Rectangle Window)
wR(n)?RN(n)
其幅度函數為:
WRg(?)?sin(?N/2)/sin(?/2)
(2)漢寧(Hanning)窗——升余弦窗
wHn(n)?0.5[1?cos(2?n/(N?1))]RN(n)
其頻譜函數為:
WHn(ej?)?FT[wHn(n)]?WHng(?)e?j(N?1)?/2
其幅度函數為:
WHng(?)?0.5WRg(?)?0.25[WRg(??2?/N)?WRg(??2?/N)]
(3)哈明(Hamming)窗——改進的升余弦窗
wHm(n)?[0.54?0.46cos(2?n/(N?1))]RN(n)
其頻譜函數為:
WHm(ej?)?0.54WR(ej?)?0.23WR(ej(??2?/(N?1)))?0.23WR(ej(??2?/(N?1)))
當N??1時,其幅度函數可近似表示為:
WHmg(?)?0.54WRg(?)?0.23WRg(??2?/N)?0.23WRg(??2?/N)
2.2 GUI界面設計思想
本次課程設計由于結果中圖形太多,若一次性完成所以題目的演示則需要開創許多個新的窗口進行圖形建立,這樣不方便驗收及查看。所以最后決定采用圖形用戶(Graphical User Interface,簡稱 GUI)界面,下面對GUI界面進行簡單的一些介紹。
GUI 是 Graphical User Interface 的簡稱,即圖形用戶界面,通常人機交互圖形化用戶界面設計經常讀做“goo-ee”,準確來說 GUI 就是屏幕產品的視覺體驗和互動操作部分。
GUI 是一種結合計算機科學、美學、心理學、行為學,及各商業領域需求分析的人機系統工程,強調人—機—環境三者作為一個系統進行總體設計。
在MATLAB主界面中輸入“guide”,再敲擊回車鍵,彈出GUI界面窗口,即可新建GUI界面,如下圖所示:
圖2.5 GUI界面的新建窗口圖
在圖2.5的窗口中點擊“OK”,則可新建一個GUI界面,并進入其編輯窗口,如圖2.6所示:
圖2.6 GUI界面的編輯窗口圖
隨后便可在此窗口內編輯演示界面,此次設計主要利用的是Static Text(靜態文本)和Push Button(按鈕)。在界面中輸入相關的靜態文本,并新建若干個按鈕,再以此在每個按鈕上點擊右鍵,選擇View CallBacks調出Call Back函數,將相應設計題的源代碼輸入Call Back函數界面中對應按鈕的段落后。如圖2.7 和2.8所示:
圖2.7 調用CallBack的操作流程圖
圖2.8 CallBack代碼編輯窗口圖
如此便可以建立一個方便、美觀又直觀的演示界面,以便老師驗收時操作簡單、條理清晰、并且用時不長。第三章 調試及結果分析
3.1 GUI界面的結果與調試
這次設計的演示界面采用的是GUI界面,這一點在前面提到過,在此不贅述了,只將界面的調試結果說明一下。演示界面如圖3.1所示:
圖3.1 演示界面圖
如圖3.1所示,用戶克根據需要選擇題目,每個題中又有不同的選項,只要點擊一下對應的按鈕,相關信號的處理結果就會出現在一個新的figure窗口中。
3.2 各題目的結果與調試
3.2.1 第一題
第一題的調試結果如圖3.2所示,各圖形的意義均有明確表明。
圖3.2 第一題的調試結果圖
分析: 分別以所要求采樣頻率fs=5000Hz、1000Hz對xa(t)進行等間隔采樣,得到x(n)?xa(nT),(T?1/fs為采樣周期),可知,采樣信號的頻譜函數是在原模擬信號頻譜函數的周期延拓;若以頻率f為自變量,則以采樣頻率fs?1/T為延拓周期;對頻帶限于fc的模擬信號xa(t),根據采樣定理,只有當fs?2fc時,采樣后才不會發生頻譜混疊失真。但是在Matlab上是無法計算連續函數,只有在當fs足夠大的時候,我們才將頻譜混疊忽略不計,從而可對采樣序列進行傅里葉變換;最后應用subplot()命令實現畫圖,并注意到要歸一化。
由以上實驗得到的圖形結果可以看到:,當采樣頻率越大的時候,采樣信號的頻譜越陡峭,而其失真情況也越來越小,根據采樣定理“采樣頻率越接近信號頻率,其失真情況就越小”可以得到上述結論。
3.2.2 第二題
第二題的調試結果如圖3.3所示,各圖形的意義均有明確表明。
圖3.3 第二題的調試結果圖
分析:由于所求系統的系統方程已經由題目可知,則其零極點分布圖也可由上圖所知。故根據計算所得出其系統函數后做FFT變換所得幅頻特性和相頻特性均由上圖可知。
3.2.3 第三題
第三題的調試結果如圖3.4所示,上圖為第一問結果,下圖為第二問結果。
圖3.4 第三題的調試結果圖
分析:當已調信號進行不同點數的采樣后再經不同間隔的FFT變換后,其展現的幅頻特性以及相頻特性類似于上圖。因選取的采樣點不同則結果不同。第二問中的濾波器的設計參數由題目中的調制信號和載波決定,由此設計出的低通濾波器的系統函數圖如上。最后因濾波器的不嚴密而導致解調后的原信號有所失真,并不能完完全全的解調出原信號。
3.2.4 第四題
第四題的調試結果如圖3.5所示,圖中所代表意義均有標明
圖3.5 第四題的調試結果圖
分析:首先先根據題目中所給的三角波函數以及反三角波函數的函數式得出其波形。經由不同采樣的FFT變換后有stem畫出其圖形如上。由圖可看出三角波序列和反三角波序列在8點的FFT變換后的圖形基本一樣,沒有太大差別。而16點FFT后的圖形則有不小差異,此說明對其FFT變換時,取的點數越多,圖形差異越大。
3.2.5 第五題
第五題的調試結果第一問中低通濾波器的圖形如圖3.6所示。
圖3.6 第五題的低通濾波器調試結果圖
高通濾波器的圖形如圖3.7所示。
圖3.7 第五題的高通濾波器調試結果圖 帶通濾波器的圖形如圖3.8所示。
圖3.8 第五題的帶通濾波器調試結果圖 帶阻濾波器的圖形如圖3.9所示。
圖3.9 第五題的帶阻濾波器調試結果圖 分析:經由一下理論知識可依次求出各濾波器的參數及系統函數。(1)正切變換實現頻率壓縮:
??2tan(?1T/2)/T
(2)雙線性變換:
s?(2/T)[(1?z?1)(1?z?1)]
或
z?(2/T?s)/(2T/? s(3)將所需數字濾波器的邊界頻率轉換成相應類型的模擬濾波器的邊界頻率公式為:
??(2/T)tan(?/2)
頻域圖形均由FFT變換后可得出。此次設計IIR數字濾波器是其參數選擇并不精準,均由自己在可行范圍中嘗試得出最像的結果。但其濾波器的幅頻特性和相頻特性仍然具有失真現象。
3.2.6 第六題
第六題的調試結果依次的圖形如圖4.0所示。
圖4.0 第六題的調試結果圖
分析:此圖由上往下依次為N=15及N=45的漢明窗、布萊克曼窗和矩形窗。由圖形可以看出N越小時窗函數的主瓣范圍越大,副瓣坡度越緩。濾波器濾波功能越好。
第四章 課程設計總結
4.1 課程設計所遇問題及解決方案
拿到設計題時,完全不知道從何處入手,一開始只會按照書上的解題思路一步步來算,一步步來解這些題目,解出來后再設法將其輸入編程中,從而的到想要的答案。可是每次如此,系統輸出的結果總是和預想中的不一樣,有些甚至不知道哪里出了錯。不過后來,在翻閱了有關參考文獻后,知道了題目中大部分內容都可以通過MATLAB強大的函數工具箱里的函數直接實現。開始設計后,總是用錯函數,輸錯參數等,這類問題層出不窮,畢竟是第一次用MATLAB進行設計實踐,很多問題還是要虛心向老師和同學請教的。在很多次的請教,修改后,程序基本成功地得到了運行,調試過程中又遇到了一些小問題,大多是由于粗心 導致的,這些問題在調試過程中都得到了修正。
這次課程設計過程中遇到的主要問題是頻率歸一化的問題,開始對歸一化的概念不是很清楚。在問了班上能力較強的同學后,對這個概念深入理解了,并在程序中成功地實現了。
4.2 課程設計心得體會
通過這兩周的《現代信號處理》課程設計實踐,我學習會了MATLAB編程語言的基本概念、語法、語義和數據類型的使用特點,加深了對數字信號處理這門學科所學理論知識的理解,掌握了運用結構化程序設計的基本思想和方法,更重要的是培養了自己的自學能力。
因為這是我們第一次接觸MATLAB編程語言,在編寫程序以及調試的過程中遇到了很多困難,但是我通過去圖書館查找資料,請教同學老師,再自己一點點改善程序,最終還是編寫出一個比較完善的程序,基本實現了所有要求功能,這是最值得我欣慰的一點。
剛拿到程序設計課題時,我感覺一片茫然,因為在之前的信號處理學習中,本身對數字信號處理這門學科的學習就不精深,更何況只是在一些例題中接觸過MATLAB語言,甚至沒有看過一些基礎的書籍,更沒有上過課,所以初次遇到一個實際問題,感覺無從下手。這是由于自己對MATLAB的模塊設計不夠理解,同時對MATLAB的基本語句一無所知,不過通過請教老師懂得了首先要了解解題思路,以及若要實現此次設計需要哪些最基本的思路和函數。這樣一下子豁然開朗,掌握了基本設計思路之后,后面的編程就順利多了。至此,我真真體會到清晰地思路對成功編寫一個程序的重要性。
當然成功編寫一個程序絕非易事,之前,我總以為程序能夠正常運行,就代表著編程成功,后來我才發現我大錯特錯了。我用了三天時間,完成了程序的編寫、改錯,但我立刻發現盡管程序能夠正常運行,部分功能卻不完善,甚至不能出現自己想要的結果。經過一次又一次調試、修改又修改,一點一點發現問題并改正,我才真正發現編程遠沒有想象中的簡單,并且深刻體會到編程和單純的解題是有著多么大的不同。它需要的不僅是清晰地編程思路、編程技巧,還需要細心,有耐心有毅力。
在編程過程中,我遇到了許多問題,通過查找資料也未能找到原因,每次我想老師請教,可老師總不是萬能的,顧不到每一位同學的要求。這時,同學就是一個很好的求助對象。我們可以找曾經接觸過MATLAB的同學學習、交流、討論。這樣不僅我們可以學習,他們也可以更加鞏固他們的知識。我想這便是團隊 精神,有的時候真的是人多力量大。
最后,在此次編程過程中,我收獲的不僅僅是對上學期已學的知識的鞏固,和MATLAB這項新的工作平臺,我還學會了遇到難題時不能輕易放棄,要有迎難而上的勇氣,有時候自己一個人完成不了的理解不了的知識,多請教請教別人是一項很好的選擇等等。總之,這次課程設計讓我學會了很多,我會銘記于心,讓其在以后的學習、生活或者工作中都時刻警醒著我。
附錄:
源程序清單
%1.現代碼 figure(1)t=-0.005:0.0001:0.005;y1=exp(-1000*abs(t));T=0.0002;n=-25:1:25;y2=exp(-1000*abs(n*T));N=200;k=0:1:N;w=pi*k/N;X=y2*exp(-j*n'*w);X=real(X);w=[-fliplr(w),w(2:N+1)];X=[fliplr(X),X(2:N+1)];subplot(2,2,1);plot(t,y1);title('原函數');xlabel('t/秒');ylabel('y1(n)');subplot(2,2,2);stem(n*T,y2,'.');xlabel('n*T/秒');ylabel('y2(n)');title('(1)離散序列,fs=5000');subplot(2,3,4);plot(w/pi,X);xlabel('頻率/pi');ylabel('Xl(w)')title('(1)序列的傅里葉變換')t=-0.005:0.0001:0.005;y1=exp(-1000*abs(t));T=0.001;n=-5:1:5;y2=exp(-1000*abs(n*T));N=200;k=0:1:N;w=pi*k/N;X=y2*exp(-j*n'*w);X=real(X);w=[-fliplr(w),w(2:N+1)];X=[fliplr(X),X(2:N+1)];subplot(2,3,5);stem(n*T,y2,'.');xlabel('n*T/秒');ylabel('y2(n)');title('(2)離散序列,fs=1000');subplot(2,3,6);plot(w/pi,X);xlabel('頻率/pi');ylabel('Xl(w)')title('(2)序列的傅里葉變換')
%2.figure(1)B=[1,1];A=1;subplot(2,3,3);zplane(B,A);xlabel('實部Re');ylabel('虛部Im');title('y(n)=x(n)+x(n-1)傳輸函數零極點分布');grid on [H,w]=freqz(B,A,'whole');subplot(2,3,1);plot(w/pi,abs(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('|H(e^j^omega)|');title('幅頻響應特性');axis([0,2,0,2.2]);subplot(2,3,2);plot(w/pi,angle(H),'linewidth',2);grid on;axis([-0.1,2.1,-1.6,1.6]);xlabel('omega/pi');ylabel('phi(omega)');title('相頻響應特性');B=[1,-1];A=1;subplot(2,3,6);zplane(B,A);xlabel('實部Re');ylabel('虛部Im');title('y(n)=x(n)-x(n-1)傳輸函數零極點分布');grid on [H,w]=freqz(B,A,'whole');subplot(2,3,4);plot(w/pi,abs(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('|H(e^j^omega)|');title('幅頻響應特性 ');axis([0,2,0,2.2]);subplot(2,3,5);plot(w/pi,angle(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('phi(omega)');title('相頻響應特性');axis([-0.1,2.1,-1.6,1.6]);
%3.%(1)figure(1)t=0:1.9:100;n=0:1:99;x1=cos(pi*t);x2=cos(9*pi*t);y1=x1.*x2;y2=fft(y1,100);subplot(3,1,1);plot(t,y1);title('已調信號x');xlabel('t/秒');ylabel('y1(n)');subplot(3,1,2);stem(n,abs(y2),'.');title('幅頻特性');xlabel('頻率/pi');ylabel('幅值');pha=angle(y2);subplot(3,1,3);stem(n,pha,'.');title('相頻特性');xlabel('頻率/pi');ylabel('相位(rad)');axis([0 99-5 5]);
%(2)figure(2)t1=1;t=[0:0.05:5];x=cos(pi*t).*cos(9*pi*t);%已調信號 subplot(2,2,1);plot(t,x);title('已調信號');y=x.*cos(9*pi*t);%已調信號再乘以載波信號 wp=6*pi/5;ws=14*pi/8;Rp=3;As=30;%選定濾波器的參數,并設計模擬低通濾波器 [N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');[H,w]=freqs(B,A,127);%濾波器的系統函數 subplot(2,2,2);plot(w/(2*pi),abs(H));axis([0,5,0,1]);title('濾波器系統函數');w1=linspace(0,40,64);%求y的頻譜 F1=y*exp(-j*t'*w1);F=[fliplr(F1),F1(2:64)];w=[-fliplr(w1),w1(2:64)];subplot(2,2,3);plot(w,abs(F)),title('y的頻譜');Y3=H'.*F;%通過信號的頻譜與系統函數相乘進行濾波 z=Y3*exp(j*w'*t)/pi;%濾波后的序列 subplot(2,2,4);plot(t,z);title('濾波后的序列');
%4.figure(1)n1=0:3,n2=4:7;x1=n1+1,x2=8-n2;subplot(2,3,1);stem([n1,n2],[x1,x2],'.');title('三角波序列');x=[1 2 3 4 4 3 2 1];subplot(2,3,2);stem(abs(fft(x)),'.');title('三角波序列8點FFT');x=[1 2 3 4 4 3 2 1 0 0 0 0 0 0 0 0];subplot(2,3,3);stem(abs(fft(x)),'.');title('三角波序列16點FFT');n1=0:3,n2=4:7;x1=4-n1,x2=n2-3;subplot(2,3,4);stem([n1,n2],[x1,x2],'.');title('反三角波序列');x=[4 3 2 1 1 2 3 4];subplot(2,3,5);stem(abs(fft(x)),'.');title('反三角波序列8點FFT');x=[4 3 2 1 1 2 3 4 0 0 0 0 0 0 0 0];subplot(2,3,6);stem(abs(fft(x)),'.');title('反三角波序列16點FFT');
%5.%低通 figure(1)n=0:1:24;x=1+cos(pi*n/4)+cos(2/3*pi*n);Wp=1/4*pi;Ws=2/3*pi;Ap=3;As=30;Os=2*tan(Ws/2);Op=2*tan(Wp/2);N=ceil(1/2*log10((10^(0.1*As)-1)/(10^(0.1*Ap)-1))./log10(Os/Op)), Oc1=Op*(10^(0.1*Ap)-1)^(-1/(2*N));Oc2=Os*(10^(0.1*As)-1)^(-1/(2*N));Oc=[Oc1,Oc2];Oc=min(Oc)
wp=[Wp/pi];wr=[Ws/pi];[N,wc]=buttord(wp,wr,Ap,As,'s');[b,a]=butter(N,wc,'low');sysl=tf(b,a)w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('濾波前時域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('濾波前頻域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('濾波后的時域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('濾波后的頻域波形');
figure(2);freqz(b,a,1000);title('濾波器幅頻相頻響應');%高通 figure(1)n=0:1:24;x=1+cos(pi*n/4)+cos(2/3*pi*n);Wp=2*pi/3;Ws=1*pi/4;Ap=3;As=30;Os=2*tan(Ws/2);Op=2*tan(Wp/2);N=ceil(1/2*log10((10^(0.1*As)-1)/(10^(0.1*Ap)-1))./log10(Op/Os)), Oc1=(1/Op)*(10^(0.1*Ap)-1)^(-1/(2*N));Oc2=(1/Os)*(10^(0.1*As)-1)^(-1/(2*N));Oc=[Oc1,Oc2];Oc=min(Oc)
wp=[Wp/pi];wr=[Ws/pi];[N,wc]=buttord(wp,wr,Ap,As,'s');[b,a]=butter(N,wc,'high');sysl=tf(b,a)w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('濾波前時域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('濾波前頻域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('濾波后的時域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('濾波后的頻域波形');
figure(2);freqz(b,a,1000);title('濾波器幅頻相頻響應');
%帶通 figure(1);wp1=(3*pi)/16;wp2=(5*pi)/16;ap=1;ws1=(1*pi)/16;ws2=(5*pi)/9;as=50;wp=[wp1/pi wp2/pi];ws=[ws1/pi ws2/pi];[N,wn]=buttord(wp,ws,ap,as);[b,a]=butter(N,wn,'bandpass');N, sysl=tf(b,a), w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('濾波前時域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('濾波前頻域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('濾波后的時域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('濾波后的頻域波形')
figure(2);freqz(b,a,1000);title('濾波器幅頻相頻響應');
%帶阻 figure(1);
wp1=pi/16;wp2=(5*pi)/9;ap=1;ws1=(3*pi)/16;ws2=(5*pi)/16;as=50;wp=[wp1/pi,wp2/pi];ws=[ws1/pi,ws2/pi];[N,wc]=buttord(ws,wp,ap,as);[b,a]=butter(N,wc,'stop');w=linspace(0,2*pi,500);N, sysl=tf(b,a)
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('濾波前時域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('濾波前頻域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('濾波后的時域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('濾波后的頻域波形')
figure(2);freqz(b,a,1000);title('濾波器幅頻相頻響應');
%6.%(1)figure(1)Window=hanning(16);h=fir1(15,[0.3 0.5],Window);
freqz(h,1)title('N=15的漢寧窗');figure(2)Window=hanning(46);h=fir1(45,[0.3 0.5],Window);freqz(h,1)title('N=45的漢寧窗');%(2)figure(3)Window=blackman(16);b=fir1(15,[0.3 0.5],Window);freqz(b,1)title('N=15的布萊克曼窗');
figure(4)Window=blackman(46);b=fir1(45,[0.3 0.5],Window);freqz(b,1)title('N=45的布萊克曼窗');
figure(5)Window=boxcar(16);b=fir1(15,[0.3 0.5],Window);freqz(b,1)title('N=15的矩形窗');
figure(6)Window=boxcar(46);b=fir1(45,[0.3 0.5],Window);freqz(b,1)title('N=45的矩形窗');
參考文獻
[1]高西全,丁玉美.數字信號處理.第三版.西安:西安電子科技大學出版社,2008 [2]彭軍,李宏.信號與信息處理基礎.北京:中國鐵道出版社,2009 [3]A.V.奧本海姆,等.信號與系統.劉樹棠,譯.西安:西安交通大學出版社,1985 [4]程佩青.數字信號處理教程.第二版.北京:清華大學出版社,2001 [5]陳懷琛,吳大正,高西全.MATLAB在電子信息課程中的應用.第三版.北京:電子工業出版社,2006 [6]董長虹.MATLAB信號處理與應用.北京:國防工業出版社,2005
第四篇:中南大學 課程設計實踐報告
中南大學
本科生課程設計(實踐)任務書、設計報告
(大學計算機基礎)
題 目 理想世界 學生姓名 李杰 指導教師 邵自然 學 院 湘雅醫學院 臨床醫學與醫學技術
專業班級 1105班
學生學號
2211110512
計算機基礎教學實驗中心
年 月 日
課程設計實踐報告 理想世界 李杰
我選的主題是理想世界,我的思想是從圖片來展現理想世界的樣子,用圖片表達我想說的內容。
設計的步驟:從以上兩個方面入手,目錄作為主頁,主頁內容是理想世界中frontpage的一些介紹,并且引入一些優美的圖片,再一個個的建立超鏈接。在引入一些解決手段,創建連接理想世界。在理想世界這個鏈接中從圖片來展現理想世界的樣子,用圖片表達我想說的內容。,也可以用一些flash動畫,還可以使用word鏈接一些圖片。在理想世界這個鏈接中,也可使用word鏈接一些先驅的行動,與我們自己的所處的世界對比,ppt制作幻燈片來演示一些有效提示,讓我的理想世界最好的展現給大家。
采取的方法與手段:用Frontpage制作網頁,通過鏈接使word文檔、Powerpoint幻燈片、Flash動畫得以展示。在網頁制作中,可以通過添加圖片來使頁面更加美麗,在word文檔中可以展示藝術字、建立文本。通過powerpoint可以把某些保護環境的行動展示。Flash動畫是以鏈接的方法來參與展示。在需要一些資料的時候,可在網絡上尋找,由于不是文件,這時就可以通過復制粘貼操作來獲取資料。
遇到的問題:(1).在網頁制作中,剛開始的時候連網頁的表格布局都弄不出來,不知道該如何制作,從哪些方面入手。解決方法:先看了幾遍課本,然后跟著課本的步驟上機實踐,但是發現制作過程還是太慢,而且不熟悉frontpage網頁制作工具,因此,開始幾次的實踐都是在慢慢熟悉該工具。直到熟悉該工具后才開始去制作。在word文檔制作中,因為以前在中學的時候用過該工具,現在還有一些印象,所以經過一系列重溫操作后,word文檔的制作就熟悉了。在Powerpoint幻燈片制作中,因為是第一次接觸和使用,許多功能和手段都不知道,較難制作出符合人意的幻燈片。通過多次實驗操作來了解和熟悉它,然后就可以使用了。(2)在flash動畫制作過程中,雖然老師上課講過制作過程,但還是遇到了難題:制作的動畫中,元件不隨引導層而動,而是在關鍵幀之間走直線,這
個問題導致了我做不出動畫,我只好一次次的嘗試去做,最后成功做出來。有時還有一些小技巧,都是從同學手中問過來的。在設置背景圖片時,會發現圖片太小的話,背景就會變成多張重復的圖片拼在一起,后來經過向同學詢問后,使用圖片編輯器對背景大小做了調整,使得背景和網頁內容能夠很好地融合在一起。二,網頁制作好后瀏覽時圖片顯示不出來,改文件名或者換了文件夾儲存都會導致圖片無法顯示,后來經過詢問學習之后,才知道原因即任何圖片的顯示都是依靠路徑來尋找來源,要設成相對路徑有利于在其他機子上打開。在設置主題之前插好圖片。三,剛開始做PPT時,不知道怎么插進去背景音樂和讓它連續播放,后來經過多次實踐后,發現可以在效果中設置這些。四,剛開始不會弄超鏈接,然后經過向同學詢問后才明白,在選定對象之后點擊右鍵,超鏈接,再選中連接的對象就可以了
總結:首先我們應該學會獨立思考和自我解決問題的能力,因為實踐和理論畢竟不同,在實踐中會遇到一些我們不了解的東西,這時候應該先自己摸索,實在不行就去向同學和老師詢問,一定要仔細閱讀課本,鞏固理論知識。否則很盲目,自信心也會受到打擊2,做計算機作業有時候也是一種享受,因為你會為你自己的一點點進步一點點成功而高興,增加生活情趣、3,做作業時要堅持不懈,不能在半途放棄。中途可能會遇到一些挫折,要記住“世界上沒有誰能隨隨便便成功”,只有經歷過多次失敗,才能尋找到解決問題的最好方法。4,在制作網頁的過程中,我的思想和人格也得到了升華,對大自然和地球的認識又提升到了一個另一個高度,令我受益匪淺。在全制作過程中,所有的難題都是有解決方法的,不要放棄制作機會,有難題可以去問別的同學或老師,也可以自己多次實踐來找到解決方法。我在制作過程中大部分都是自己摸索的,這樣不僅加強了自己對工具的熟悉度,同時也加強了對鍵盤的熟悉,我認為當我們自己去制作的時候,不管好壞都有助于自己,做得好,自己更有信心,鼓勵下次還能做得更好,做的不好,還可以找出錯誤,提醒自己在什么地方應該注意,在什么地方可以改正。這樣就可以更好的去改錯。有時候可以去看一看別人的作品,看一下別人是怎么做的,想一想哪里值得借鑒,如果是自己,怎么做會更好。這樣,在看的時
候可以加強對工具的熟悉,了解一些技巧,增加自己的見識。
這次的網頁制作對于我來說與有很大的收獲,我學會了,如何制作網頁,如何在網頁上表達自己的觀點,以及網頁制作的一些基本技巧,和網頁制作過程中 最常見,最基本問題的解決。By臨床與醫技1105 李杰 2211110512 4
第五篇:現代信號處理課設報告
中南大學 課程設計報告
題 目 現代信號處理課程設計 學生姓名 萬義武 指導教師 周揚、支國明 學 院 信息科學與工程學院 學 號 0909118219 專業班級 電子信息專業1102班
一、課程設計題目
1、信號發生器
用戶根據測試需要,可任選以下兩種方式之一生成測試信號:(1)直接輸入(或從文件讀取)測試序列;(2)輸入由多個不同頻率正弦信號疊加組合而成的模擬信號公式(如式 1-1 所示)、采樣頻率(Hz)、采樣點數,動態生成該信號的采樣序列,作為測試信號。12 100sin(2)100sin(2)100sin(2)n f t f t f t
(1-1)
2、頻譜分析
使用 FFT 對產生的測試信號進行頻譜分析并展示其幅頻特性與相頻特性,指定需要濾除 的頻帶,通過選擇濾波器類型(IIR / FIR),確定對應的濾波器(低通、高通)技術指標。
3、濾波器設計
根據以上技術指標(通帶截止頻率、通帶最大衰減、阻帶截止頻率、阻帶最小衰減),設 計數字濾波器,生成相應的濾波器系數,并畫出對應的濾波器幅頻特性與相頻特性。(1)IIR DF 設計:可選擇濾波器基型(巴特沃斯或切比雪夫型);
(2)FIR DF 設計:使用窗口法(可選擇窗口類型,并比較分析基于不同窗口、不同階數 所設計數字濾波器的特點)。
4、數字濾波
根據設計的濾波器系數,對測試信號進行數字濾波,展示濾波后信號的幅頻特性與相頻特 性,分析是否滿足濾波要求(對同一濾波要求,對比分析各類濾波器的差異)。(1)IIR DF:要求通過差分方程迭代實現濾波(未知初值置零處理);
(2)FIR DF:要求通過快速卷積實現濾波(對于長序列,可以選擇使用重疊相加或重疊 保留法進行卷積運算)。
5、選做內容
將一段語音作為測試信號,通過頻譜展示和語音播放,對比分析濾波前后語音信號的變化,進一步加深對數字信號處理的理解。
二、設計過程
《1》、第一、二題:(1).信號發生器。
①直接輸入(或從文件讀取)測試序列;
②輸入由多個不同頻率正弦信號疊加組合而成的模擬信號公式。
③使用FFT對產生的測試信號進行頻譜分析并展示其幅頻特性與相頻特性。(2).源代碼
t=(0:0.00001:1);n=0:100;f1=50;y=sin(2*pi*f1*t);f=input('please f=');T=1/f;x=sin(2*pi*f1*n*T);m=fft(x);h=abs(m);figure(1);subplot(321)plot(t,y);subplot(322)stem(n,x,'.');title('xulitu');subplot(323)plot(n,h);title('fupintu');subplot(324)xi=interp1(n,x,t*f1,'linear');plot(t,xi);title('chongjiantu');
(3)結果
(4)分析:
采樣原理:對模擬信號進行采樣可以看作是一個模擬信號通過一個電子開關S。設電子開關每隔周期T合上一次,每次合上的時間為τ,在電子開關輸出端得到其采樣信號,一般τ很小, τ越小,采樣輸出脈沖的幅度越接近輸入信號在離散時間點上的瞬時值。
《2》、第三、四題
(1)題目(濾波器設計與數字濾波)
濾波器設計—根據輸入的數字濾波器的技術指標,包括通帶截止頻率,通帶最大衰減,阻帶截止頻率,阻帶最小衰減,設計濾波器,生成相應的濾波器系數,并畫出對應的濾波器幅頻、相頻特性。IIR DF設計:可選擇濾波器基型(巴特沃斯或切比雪夫型);
(2)源代碼
i=input('please input i(choose fuction)=');switch fix(i)
case {1}%低通濾波
wp=input('please input wp=');ws=input('please input ws=');ap=input('please input ap=');as=input('please inout as=');fs=1;T=1/fs;
wp1=(2/T)*tan(wp/2);ws1=(2/T)*tan(ws/2);
[n,wn]=buttord(wp1,ws1,ap,as,'s');[b,a]=butter(n,wn,'s');[bz,az]=bilinear(b,a,fs);w=linspace(0,2*pi,1000);h=freqz(bz,az,w);
subplot(311)
plot(w(1:500)/pi,abs(h(1:500)));grid;
title(['N=',num2str(n)]);text(0.1,0.8,['b=',num2str(bz)]);text(0.1,0.4,['a=',num2str(az)]);xlabel('w/pi');ylabel('幅度(dB)');
subplot(312)plot(w/pi,angle(h));
xlabel('w/pi');ylabel('相位');grid;
subplot(313)y=real(ifft(h));x=0:999;plot(x,y);
title('單位脈沖響應');grid;clear;
case{2}%高通濾波
wp=input('please input wp=');ws=input('please input ws=');ap=input('please input ap=');as=input('please inout as=');fs=1;T=1/fs;
wp1=(2/T)*tan(wp/2);ws1=(2/T)*tan(ws/2);
[n,wn]=buttord(wp1,ws1,ap,as,'s');[b,a]=butter(n,wn,'high','s');[bz,az]=bilinear(b,a,fs);w=linspace(0,2*pi,1000);h=freqz(bz,az,w);
subplot(311)
plot(w(1:500)/pi,abs(h(1:500)));grid;
title(['N=',num2str(n)]);text(0.1,0.9,['b=',num2str(bz)]);text(0.1,0.4,['a=',num2str(az)]);xlabel('w/pi');ylabel('幅度(dB)');
subplot(312)plot(w/pi,angle(h));
xlabel('w/pi');ylabel('相位');grid;
subplot(313)y=real(ifft(h));x=0:999;plot(x,y);
title('單位脈沖響應 ');grid;clear;
case{3}%帶通濾波
wpl=input('please input wpl=');wph=input('please input wph=');wsl=input('please input wsl=');wsh=input('please input wsh=');ap=input('please input ap=');as=input('please inout as=');wp=[wpl,wph];ws=[wsl,wsh];fs=1;T=1/fs;
wp2=(2/T)*tan(wp/2);ws2=(2/T)*tan(ws/2);
[n,wn]=buttord(wp2,ws2,ap,as,'s');[b,a]=butter(n,wn,'s');[bz,az]=bilinear(b,a,fs);w=linspace(0,2*pi,1000);h=freqz(bz,az,w);
subplot(311)
plot(w(1:500)/pi,abs(h(1:500)));grid;
title(['N=',num2str(n)]);text(0.1,1.2,['b=',num2str(bz)]);text(0.1,0.4,['a=',num2str(az)]);xlabel('w/pi');ylabel('幅度(dB)');
subplot(312)plot(w/pi,angle(h));
xlabel('w/pi');ylabel('相位');grid;
subplot(313)y=real(ifft(h));x=0:999;plot(x,y);
title('單位脈沖響應 ');grid;clear;
end
(3)結果
低通濾波
高通濾波
帶通濾波(4)分析
用雙線性變換法設計無限脈沖響應數字濾波器(IIF DF)時,先把數字濾波器指標轉換成模擬濾波器的指標,然后根據模擬濾波器的指標設計模擬濾波器,再經過線性變換把模擬濾波器轉換成數字濾波器。該系統要能夠設計巴特沃茲型低通、帶通、高通濾波器,并能夠輸入數字濾波器的性能指標,顯示出濾波器的階數和系數。該系統的關鍵部分是濾波器的設計部分,按照雙線性變換法設計濾波器的步驟進行設計即可。
三、設計總結與心得體會
在課程設計的這段時間,我獲益匪淺。不但進一步掌握了數字信號處理的基礎知識及MATLAB的基本操作。雖然在做的過程中遇到了一些問題,但都通過自己的努力解決了它們。這次課程設計對我各方面的綜合能力有了很大的提高,對我以后的實踐都有很大的幫助。
本次課程設計不但讓我又學到了一些知識,而且也提高了我的綜合能力。使我在各個方面都得到了鍛煉,以后有這樣的機會一定會更加的很好利用,它不僅可以提高學習的針對性而且可以很好的鍛煉動手能力以及自己的邏輯設計能力和處理問題的能力,希望在以后這方面的能力會很好的加強。
四、課程設計指導書
[1] 《數字信號處理(第二版)》.丁玉美等 西安電子科技大學出版社 [2] 《數字信號處理及其MATLAB實現》,陳懷琛等譯,電子工業出版社;
[3] 《MATLAB及在電子信息課程中的應用》,陳懷琛等,電子工業出版社
五、鳴謝
此次的課程社真心感謝那些為我們提供良好的上機環境已經良好的知道的老師們。同時也感謝中南大學給了我這一次檢驗自己的動手能力以及發現自己錯誤的機會!