MATLAB之时频域乐器信号的分析与处理
##MATLAB之時域及頻域的樂器信號分析及處理
MATLAB之時域及頻域的樂器信號分析及處理
- 前言
- 設計題目及要求
- 詳細步驟
- 一.創建腳本,導入音頻文件并播放
- 二.畫出信號的時域波形
- 三.進行快速傅里葉變化及數據選取
- 四.畫出頻域圖像
- 五.構建濾波器
- 六.導入濾波器并得出傳遞系數
- 七.進行濾波
- 八.畫出濾波后信號的時域、頻域圖
- 九.畫濾波圖像
- 十.導出濾波后的音頻文件
前言
這是之前使用MATLAB做的一個項目,來對語音信號進行分析處理,設計語音信號的導入及播放操作,讀取信號長度、畫圖及生成濾波等操作,MATLAB小白可零基礎上手,只要跟著教程一步一步來就可以,非常簡單。
后續會上傳源碼及文件,請關注并收藏。
設計題目及要求
##設計題目及要求
1.設計題目:時頻域樂器信號的分析與處理
2.設計目標:對樂器不同音階信號進行時頻域分析和處理的基本方法
3.設計要求
(1)分別錄制鋼琴、吉他、口琴等樂器在不同音階的聲音文件,并將文件導入Matlab中;
(2)分別分析各樂器(兩種或兩種以上)的不同音階聲音的頻譜,繪制其頻譜圖,分析聲音信號的頻譜;
(3)設計相應的濾波器,剔除聲音信號的高頻諧波,并分析濾波信號的頻譜;
(4)生成濾波后的語音文件,分析聽覺效果。
詳細步驟
##下面開始詳細教程
一.創建腳本,導入音頻文件并播放
1.在MATLAB中創建一個新腳本并保存
2.選擇音頻文件導入MATLAB中并播放
(1)首先要注意的是MATLAB處理的音頻信號為波形文件,.wav格式,所以不能直接導入.mp3等格式,改格式直接修改后綴名即可;
(2)注意一定要將要處理的音頻文件放到運行目錄下;
(3)接下來在腳本中導入音頻文件
這里用到的函數是audioread,這個一般是通用的,任何版本都可以用。函數中需要寫出要導入的音頻文件,注意文件名稱中不能有中文!
audioread函數為采集音頻信號數據,采樣值將放在向量MU中,fs為表示采樣頻率。
MU和fs可根據喜好修改為其他名字。
(4)在MATLAB中該播放音頻
這里只需要一個函數即可,無需過多解釋。
二.畫出信號的時域波形
plot(MU); //直接畫出數組MU的圖形,即為時域圖title('初始信號波形'); //設置圖像的標題xlable('時間'); //設置圖像X軸名稱ylable('幅度'); //設置圖像Y軸名稱grid //在圖中添加網格線,增加可讀性##注意:
這里僅僅為作時域圖的方法,在建立整個項目時還需要考慮美觀性等因素,一般來說需要
建立一個專門的圖形界面,完整整合代碼將會放在后面。
三.進行快速傅里葉變化及數據選取
1.計算信號長度
n=length(MU);2.快速傅里葉變化
MU1=fft(MU,n);數據MU傅里葉變化后的數據將儲存到MU1中
3.選取一半數據
這里要注意傅里葉變化后的數據為一個對稱圖形,這里為了美觀性選取了其中的一般數據,
這里無所謂,影響不大
四.畫出頻域圖像
plot(abs(gq1(1:len))); //畫出頻譜圖title('初始信號頻譜'); //設置標題xlabel('頻率'); //設置X軸名稱ylabel('幅度'); //設置Y軸名稱grid on //添加網格線五.構建濾波器
這里我用的是MATLAB自帶的fdatool工具來構建的濾波器,在MATLAB中直接輸入fdatool就可以打開這個工具。
這里有兩種濾波器可供選擇,IIR濾波器和FIR濾波器,本人使用的是IIR濾波器。
具體參數可根據自己需要進行設置。
設置好參數后需要將濾波器模型導出,具體步驟如下:
File-Export
在彈出的窗口中,Export To這里選擇MAT-File,Export As這里選擇Objects
之后點擊下方Export,保存文件就可以到處濾波器的模型文件了,格式為.mat
六.導入濾波器并得出傳遞系數
load('E:\lowpass.mat'); //導入濾波器[b,a]=tf(Hd); //得出傳遞系數這里load函數為導入文件,單引號中寫濾波器模型文件的位置,注意加上后綴,而且路徑中不
要有中文。
七.進行濾波
x=filter(b,a,MU);這一步直接寫即可,無需過多解釋
八.畫出濾波后信號的時域、頻域圖
這一步與畫原始信號的時域頻域圖大同小異,無非是把MU換成了x,下面直接放代碼。
##時域圖plot(x); //畫出濾波后音頻的時域圖title('濾波后信號的波形'); //設置標題xlabel('時間'); //設置X軸單位ylabel('幅度'); //設置Y軸單位grid on //添加網格線##頻域圖n=length(x); //計算濾波后音頻數據長度X1=fft(x,n); //對濾波后音頻進行傅里葉變化len = round((length(X1))/2); //選取一半長度plot(abs(X1(1:len))); //畫出濾波后音頻的頻譜圖title('濾波后信號的頻譜'); //設置標題xlabel('頻率'); //設置X軸ylabel('幅度'); //設置Y軸grid on //添加網格線九.畫濾波圖像
這一步在構建濾波器的時候上面就已經顯示了,但是為了方便直接看,就加了這一步。
fvtool(Hd,'Analysis','magestimate');這也是MATLAB自帶的功能,里面的三個參數,第一個是要畫的參數,后面兩個是X軸和Y軸的名稱。
十.導出濾波后的音頻文件
audiowrite('newpiano.wav',x,fs);單引號中為文件名,自己取即可,注意加后綴。
##以上就是全部的過程,后續會上傳全部源碼及文件
##不足之處請及時指出,互相學習
##文件已上傳,自行下載
https://download.csdn.net/download/weixin_44936771/12677957
總結
以上是生活随笔為你收集整理的MATLAB之时频域乐器信号的分析与处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HBase的微博案例
- 下一篇: 台式计算机mtbf,电子产品整机MTBF