信號分析課程設計
1. 課程設計要求利用MATLAB對語音信號進行分析和處理,要求學生採集語音信號後,在MATLAB軟體平台進行頻譜分
這是我剛做的雙線性變換法低通濾波器,運行是正確的!ly是語音信號的名字,別的自己改改就行!
原語音信號程序
figure(1);
[y,fs,nbits]=wavread ('ly');
sound(y,fs,nbits); %回放語音信號
n = length (y) ; %求出語音信號的長度
Y=fft(y,n); %傅里葉變換
subplot(2,1,1);plot(y);title('原始信號波形');
subplot(2,1,2);plot(abs(Y));title('原始信號頻譜')
加噪語音信號程序
figure(2);
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出語音信號的長度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函數產生雜訊
s=y+noise; %語音信號加入雜訊
sound(s);
subplot(2,1,1);plot(s);title('加噪語音信號的時域波形');
S=fft(s); %傅里葉變換
subplot(2,1,2);plot(abs(S));title('加噪語音信號的頻域波形')
濾波後的信號程序
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通濾波器的階數和截止頻率
[b11,a11]=butter(n11,wn11,'s'); %求S域的頻率響應的參數
[num11,den11]=bilinear(b11,a11,0.5); %利用雙線性變換實現頻率響應S域到Z域的變換
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出語音信號的長度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函數產生雜訊
s=y+noise; %語音信號加入雜訊
z11=filter(num11,den11,s);
sound(z11);
m11=fft(z11); %求濾波後的信號
figure(3);
subplot(2,1,1);plot(z11);title('濾波後的信號波形');
subplot(2,1,2);plot(abs(m11),'r');title('濾波後信號的頻譜');
你的串號我已經記下,採納後我會幫你製作
2. 函數信號發生器課程設計
方案三:用單片集成函數發生器5G8038
可行性分析:
上面三種方案中,方案一與方案二中三角波——正弦波部分原理雖然不一樣,但是他們有共通的地方就是都要認為地搭建波形變換的電路圖。而方案三採用集成晶元使得電路大大簡化,但是由於實驗室條件和成本的限制,我們首先拋棄的是第三種方案,因為它是犧牲了成本來換取的方便。其次是對方案一與方案二的比較,方案一中用的是電容和電阻運放和三極體等電器原件,方案二是用的二極體、電阻、三極體、運放等電器原件,所以從簡單而且便於購買的前提出發我們選擇方案一為我們最終的設計方案。
1.4參數的確定
1、 從電路的設計過程來看電路分為三部分:①正弦波部分②方波部分③三角波部分
2、 正弦波部分
由於我們選取差分放大電路對三角波——正弦波
進行變換,首先要完成的工作是選定三極體,我
們現在選擇KSP2222A型的三極體,其靜態曲線圖
像如右圖所示。
根據KSP2222A的靜態特性曲線,選取靜態
工作區的中心
由直流通路有:
20 k
k
因為靜態工作點已經確定,所以靜態電流變成已知。根據KVL方程可計算出鏡像電流源中各個電阻值的大小:
可得
3、 方波部分與三角波部分參數的確定
根據性能指標可知
由 ,可見f與c成正比,若要得到1Hz~10Hz,C為10 。10Hz~100Hz,C為1 。
則 =7.5k ~75k ,則 =5.1k
則 =2.4k 或者 =69.9 k
∴ 取100 k
∵
由輸出的三角形幅值與輸出方波的幅值分別為5v和14v,有
=
∴ =10k
則 ≈47 k , =20 k
根據方波的上升時間為兩毫秒,查詢運算放大器的速度,可以選擇74141型號的運放。
由此可得調整電阻:
七、實務圖的焊接和調試
1、按照方案一的電路圖焊接好電路板。
2、調試前,將電路板接入±12伏電壓,地線與電源處公共地線連接.
(1)頻率范圍:
為便於測量,將電路板上的方波信號接入示波器,並合上C1=10
3. 基於MATLAB的語音信號分析與處理的課程設計
第二種,記得要改73行聲音路徑
% % 程序1:用MATLAB對原始語音信號進行分析,畫出它的時域波形和頻譜
% clear all
% close all
% clc
% fs=8000; %語音信號采樣頻率為8000
% x1=wavread('I:\2010教案\2010數字信號處理\rafarin_8k.wav',[1 4*5120]);
% t=(0:length(x1)-1)/8000;
% y1=fft(x1,2048); %對信號做2048點FFT變換
% f=fs*(0:1023)/2048;
% figure(1)
% plot(t,x1) %做原始語音信號的時域圖形
% grid on; axis tight;
% title('原始語音信號');
% xlabel('time(s)');
% ylabel('幅度');
% figure(2)
% plot(f,abs(y1(1:1024))) %做原始語音信號的FFT頻譜圖
% grid on; axis tight;
% title('原始語音信號FFT頻譜')
% xlabel('Hz');
% ylabel('幅度');
% sound(x1)
% %
% % **************************************************************************************************************************
%
% % % 程序2:給原始的語音信號加上一個高頻餘弦雜訊,頻率為3.8kHz。
% % 畫出加噪後的語音信號時域和頻譜圖,與原始信號對比,可以很明顯的看出區別。
% clear all;
% close all
% clc;
% fs=8000;
% x1=wavread('I:\2010教案\2010數字信號處理\rafarin_8k.wav',[1 4*5120]);
% t=(0:length(x1)-1)/8000;
% f=fs*(0:1023)/2048;
% Au=0.5;
% % d=[Au*cos(2*pi*3800*t)]'; %雜訊為3.8kHz的餘弦信號
% d=0.25*rand(1,length(x1))'; %隨機雜訊
% x2=x1+d;
% y1=fft(x1,2048);
% y2=fft(x2,2048);
% figure(1)
% subplot(2,1,1);
% plot(t,x1)
% grid on; axis tight;
% title('原始語音信號');
% xlabel('time(s)');
% ylabel('幅度');
% subplot(2,1,2);
% plot(t,x2)
% grid on; axis tight;
% title('加噪後的信號');
% xlabel('time(s)');
% ylabel('幅度');
% figure(2)
% subplot(2,1,1);
% plot(f,abs(y1(1:1024))); grid on; axis tight;
% title('原始語音信號頻譜');
% xlabel('Hz'); ylabel('幅度');
% subplot(2,1,2);
% plot(f,abs(y2(1:1024)));grid on;axis tight;
% title('加噪語音信號頻譜');
% xlabel('Hz');ylabel('幅度');
% sound(x2)
%
% **********************************************************************************************************************
%
% 程序3: 雙線性變換法設計Butterworth濾波器
clear all;
close all
clc;
fs=8000;
x1=wavread('I:\2010教案\2010數字信號處理\rafarin_8k.wav',[1 4*5120]);
t=(0:length(x1)-1)/8000;
f=fs*(0:1023)/2048;
A1=0.05; A2=0.10;
d=[A1*cos(2*pi*3800*t)+A2*sin(2*pi*3600*t)]';
% d=0.25*rand(1,length(x1))'; %隨機雜訊
x2=x1+d;
wp=0.8*pi;
ws=0.85*pi;
Rp=1;
Rs=15;
Fs=8000;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2); %將模擬指標轉換成數字指標
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s'); %選擇濾波器的最小階數
[Z,P,K]=buttap(N); %創建butterworth模擬濾波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs); %用雙線性變換法實現模擬濾波器到數字濾波器的轉換
[H,W]=freqz(bz,az); %繪制頻率響應曲線
figure(1)
plot(W*Fs/(2*pi),abs(H))
grid on;axis tight;
xlabel('頻率(Hz)'); ylabel('頻率響應')
title('Butterworth')
f1=filter(bz,az,x2); % 濾波
figure(2)
subplot(2,1,1)
plot(t,x2) %畫出濾波前的時域圖
grid on; axis tight;
title('濾波前的時域波形');
subplot(2,1,2)
plot(t,f1); %畫出濾波後的時域圖
grid on; axis tight;
title('濾波後的時域波形');
y3=fft(f1,2048);
figure(3)
y2=fft(x2,2048);
subplot(2,1,1);
plot(f,abs(y2(1:1024))); %畫出濾波前的頻譜圖
grid on; axis tight;
title('濾波前的頻譜')
xlabel('Hz');
ylabel('幅度');
subplot(2,1,2)
plot(f,abs(y3(1:1024))); %畫出濾波後的頻譜圖
grid on; axis tight;
title('濾波後的頻譜')
xlabel('Hz');
ylabel('幅度');
sound(x2,8000);
sound(f1,8000);
% %
% % ********************************************************************************************************************
% %
% 程序4:窗函數法設計濾波器:
% clear all;
% clc;
% fs=8000;
% x1=wavread('I:\2010教案\2010數字信號處理\rafarin_8k.wav',[1 4*5120]);
% t=(0:length(x1)-1)/8000;
% f=fs*(0:2047)/4096;
% A1=0.05;A2=0.10;
% d=[A1*cos(2*pi*3600*t)+A2*sin(2*pi*3800*t)]';
% x2=x1+d;
% wp=0.8*pi;
% ws=0.85*pi;
% wdelta=ws-wp;
% N=ceil(6.6*pi/wdelta); %取整
% wn=(0.8+0.85)*pi/2;
% [bz,az]=fir1(N,wn/pi,hamming(N+1)); %選擇窗函數,並歸一化截止頻率
% figure(1)
% freqz(bz,az);
% grid on; axis tight;
% f2=filter(bz,az,x2);
% figure(2)
% subplot(2,1,1)
% plot(t,x2);
% grid on;axis tight;
% title('濾波前的時域波形');
% subplot(2,1,2)
% plot(t,f2);
% grid on; axis tight;
% title('濾波後的時域波形');
% y3=fft(f2,4096);
% f=fs*(0:2047)/4096;
% figure(3)
% y2=fft(x2,4096);
% subplot(2,1,1);
% plot(f,abs(y2(1:2048)));
% grid on; axis tight;
% title('濾波前的頻譜')
% xlabel('Hz');
% ylabel('幅度');
% subplot(2,1,2)
% plot(f,abs(y3(1:2048)));
% grid on; axis tight;
% title('濾波後的頻譜')
% xlabel('Hz');
% ylabel('幅度');
% sound(f2,8000);
%
% % ***********************************************************************************************************************
% %
% % 程序5: 補零,提高解析度。
% clear all; close all;
% t=0:0.01:3;
% s=sin(2*pi*5*t)+2*sin(2*pi*15*t);
% w=abs(fft(s));
% w2=abs(fft(s,4*301)); % 補零
% figure;
% subplot(211); plot(w);
% grid on; axis tight;
% subplot(212); plot(w2);
% grid on; axis tight;
%
% % ——理想濾波器——***************************************************************************
% %
% % 程序6: 理想低通濾波器
% clear all;close all;
% X=[ones(1,51) zeros(1,60) ones(1,50)]; % Frequency response of an ideal low-pass filter
% x=ifft(X); % IDFT of X with the same number of points
% Y=fft(x,483); % IDFT of X after it is padded with zeros
% stem([1:161]/161-0.5,abs(fftshift(X))); % figure 1
% axis([-0.5,0.5,0,1.5]);
% figure;
% stem(real(x)); % figure 2
% figure;
% stem([1:483]/483-0.5,abs(fftshift(Y))); % figure 3
% axis([-0.5,0.5,0,1.5]);
% figure;
% stem([1:161]/161-0.5,abs(fftshift(Y(1:3:481)))); % figure 4
% axis([-0.5,0.5,0,1.5]);
% % **********************************************************************************************************************
% % 程序7:理想帶阻濾波器
% clear all;
% clc
% wp=0.8*pi;
% ws=0.85*pi;
% wdelta=ws-wp;
% N=ceil(6.6*pi/wdelta);
% wn=(0.8+0.85)*pi/2;
% [bz,az]=fir1(N,wn/pi,hamming(N+1));
% w=abs(fft(bz));w2=abs(fft(bz,399));
% figure;
% subplot(211);plot(w);grid on; axis tight;
% subplot(212);plot(w2);grid on; axis tight;
% h(1:201)=1;h(22:181)=0;
% x1=ones(1,17); x2=ones(1,11);
% w1=fft(x1,32); w2=fft(x2,32);
% w3=w1.*w2; x3=ifft(w3); plot(x3);
%
4. 數字信號課程設計
Matlab在數字信號處理課程設計中的應用
作者:李永全 來源:現代電子技術
摘 要:分析了數字信號處理課程的重要性及特點,為了幫助學生理解與掌握課程中的基本概念、基本原理、基本分析方法,提出了用Matlab進行數字信號處理課程設計的思路,並闡述了課程設計的具體方法、步驟和內容。
關鍵詞:數字信號處理;課程設計;Matlab;頻譜分析
1 《數字信號處理》課程的特點
《數字信號處理》課程是一門理論和技術發展十分迅速、應用非常廣泛的前沿性學科,他的理論性和實踐性都很強,他的特點是:
(1)要求的數學知識多,包括高等代數、數值分析、概率統計、隨機過程等。
(2)要求掌握的基礎知識強,網路理論、信號與系統是本課程的理論基礎。
(3)與其他學科密切相關,即與通信理論、計算機、微電子技術不可分,又是人工智慧、模式識別、神經網路等新興學科的理論基礎之一。
學生在學習這門課程時,普遍感到數字信號處理的概念抽象,對其中的分析方法與基本理論不能很好地理解與掌握。因此,如何幫助學生理解與掌握課程中的基本概念、基本原理、基本分析方法以及綜合應用所學知識解決實際問題的能力,是本課程教學中所要解決的關鍵問題。為了配合《數字信號處理》專業基礎課的理論教學,我們在電子信息工程專業教學計劃中安排了二周的《數字信號處理》課程設計,他是針對《數字信號處理》的基礎理論和演算法進行實踐環節的一個綜合訓練,以便學習鞏固所學的知識,加強理論和實際結合的能力,培養學生的綜合設計能力與實際工作能力。
Matlab語言是一種廣泛應用於工程計算及數值分析 領域的新型高級語言,Matlab功能強大、簡單易學、編程效率高,深受廣大科技工作者的歡迎。特別是Matlab還具有信號分析工具箱,不需具備很強的編程能力,就可以很方便地進行信號分析、處理和設計。因此,選擇用Matlab進行課程設計。
2 基於Matlab的課程設計
為了鞏固所學的數字信號處理理論知識,使學生對信號的採集、處理、傳輸、顯示和存儲等有一個系統的掌握和理解,精心地安排了課程設計的內容:錄制一段個人自己的語音信號,並對錄制的信號進行采樣;畫出采樣後語音信號的時域波形和頻譜圖;給定濾波器的性能指標,採用窗函數法和雙線性變換設計濾波器,並畫出濾波器的頻率響應;然後用自己設計的濾波器對採集的信號進行濾波,畫出濾波後信號的時域波形和頻譜,並對濾波前後的信號進行對比,分析信號的變化;回放語音信號;最後,設計一個信號處理系統界面。下面對各步驟加以具體說明。
2.1 語音信號的採集
要求學生利用Windows下的錄音機,錄制一段自己的話音,時間在1 s內。然後在Matlab軟體平台下,利用函數wavread對語音信號進行采樣,記住采樣頻率和采樣點數。通過wavread函數的使用,學生很快理解了采樣頻率、采樣位數等概念。
2.2 語音信號的頻譜分析
要求學生首先畫出語音信號的時域波形;然後對語音號進行快速傅里葉變換,得到信號的頻譜特性,從而加深學生對頻譜特性的理解。其程序如下:
2.3 設計數字濾波器和畫出其頻率響應
給出各濾波器的性能指標:
(1)低通濾波器性能指標 fb=1 000 Hz,fc=1 200 Hz,As=100 dB,Ap=1 dB。
(2)高通濾波器性能指標 fc=4 800 Hz,fb=5 000 Hz As=100 dB,Ap=1 dB。
(3)帶通濾波器性能指標 fb1=1 200 Hz,fb2=3 000 Hz,fc1=1 000 Hz,fc2=3 200 Hz,As=100 dB,Ap=1 dB。
要求學生用窗函數法和雙線性變換法設計上面要求的3種濾波器。在Matlab中,可以利用函數fir1設計FIR濾波器,可以利用函數butte, cheby1和ellip設計IIR濾波器;利用Matlab中的函數freqz畫出各濾波器的頻率響應。程序如下:
2.4 用濾波器對信號進行濾波
要求學生用自己設計的各濾波器分別對採集的信號進行濾波,在Matlab中,FIR濾波器利用函數fftfilt對信號進行濾波,IIR濾波器利用函數filter對信號進行濾波。
2.5 比較濾波前後語音信號的波形及頻譜
要求學生在一個窗口同時畫出濾波前後的波形及頻 譜。其程序如下:
2.6 回放語音信號
在Matlab中,函數sound可以對聲音進行回放。其調用格式:sound(x,fs,bits);可以感覺濾波前後的聲音有變化。
2.7 設計系統界面
為了使編制的程序操作方便,要求有能力的學生,設計處理系統的用戶界面。在所設計的系統界面上可以選擇濾波器的類型,輸入濾波器的參數,顯示濾波器的頻率響應,選擇信號等。
3 結語
筆者在電信97,98,99,00四屆學生中,採用Matlab進行數字信號處理課程設計,實踐證明,使學生加深了對課堂抽象概念的理解,鞏固了課堂上所學的理論知識,並能很好地理解與掌握數字信號處理中的基本概念、基本原理、基本分析方法。在課程設計中,讓學生錄制自己的聲音,設計濾波器對聲音進行處理,大大激發了同學們的學習興趣,使學生很快地掌握編程方法和解決實際問題的技巧,取得了良好的教學效果。
參考文獻
〔1〕程佩青.數字信號處理教程〔M〕.北京:清華大學出版社,2002.
〔2〕劉敏,魏玲.Matlab通信模擬與應用〔M〕.北京:國防工業出版社,2001.
5. 利用FFT完成離散信號與系統的頻域分析 課程設計 老師說要用C語言 或者C++實現
張雷(FFT完成離散信號與系統的頻域分析
分析清楚才是關鍵
但是問題,你還是不懂
6. 基於labview的課程設計
VHY藍寶石戒!我來回答基於labview的課程設計
想要做好東西,就要找能坐下來深入研究的團隊, 推薦你水源品牌設計 你咨詢下! 收費也不高,青島的價格 北京上海的服務, 想你會問 為什麼 因為設計的模式創新了, 不在想其他公司一樣要求70%的利潤,他們保持30%以下。 有舍才有德,一個為客戶著想的公司 所以我推薦他,我是他的設計,為員工為客戶的公司 我們想信它!VHY
7. 課程設計的題目:基於MATLAB的語音信號分析及濾波
這是我剛做的雙線性變換法低通濾波器,運行是正確的!ly是語音信號的名字,別的自己改改就行!
原語音信號程序
figure(1);
[y,fs,nbits]=wavread ('ly');
sound(y,fs,nbits); %回放語音信號
n = length (y) ; %求出語音信號的長度
Y=fft(y,n); %傅里葉變換
subplot(2,1,1);plot(y);title('原始信號波形');
subplot(2,1,2);plot(abs(Y));title('原始信號頻譜')
加噪語音信號程序
figure(2);
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出語音信號的長度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函數產生雜訊
s=y+noise; %語音信號加入雜訊
sound(s);
subplot(2,1,1);plot(s);title('加噪語音信號的時域波形');
S=fft(s); %傅里葉變換
subplot(2,1,2);plot(abs(S));title('加噪語音信號的頻域波形')
濾波後的信號程序
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通濾波器的階數和截止頻率
[b11,a11]=butter(n11,wn11,'s'); %求S域的頻率響應的參數
[num11,den11]=bilinear(b11,a11,0.5); %利用雙線性變換實現頻率響應S域到Z域的變換
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出語音信號的長度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函數產生雜訊
s=y+noise; %語音信號加入雜訊
z11=filter(num11,den11,s);
sound(z11);
m11=fft(z11); %求濾波後的信號
figure(3);
subplot(2,1,1);plot(z11);title('濾波後的信號波形');
subplot(2,1,2);plot(abs(m11),'r');title('濾波後信號的頻譜');