免费H精品无码网站,国产亚洲中文字字幕,国产小视频在线观看,www黄色成人网站免费,大乳女做爰国产精品,亚洲成va人在线视频,欧美一级特黄aaa大片在线观看,国产日韩欧美在线

免費發(fā)布產(chǎn)品 快速發(fā)布資訊

在matlab中怎樣實現(xiàn)對聲音的導(dǎo)入,分析與處理???

?? 2021-04-21 7340
核心提示:1、首先啟動MATLAB軟件。2、首先設(shè)定好波形的基本參數(shù),采樣點數(shù),采樣頻率,采樣間隔,時間間隔,最高采樣頻率等,注意要符合采

1、首先啟動MATLAB軟件。

2、首先設(shè)定好波形的基本參數(shù),采樣點數(shù),采樣頻率,采樣間隔,時間間隔,最高采樣頻率等,注意要符合采樣定理才能保證信號不失真。

3、然后定義聲音信號的波形,可以是普通的余弦波,也可以復(fù)雜的波形,然后用subplot語句將波形繪制出來。

4、然后創(chuàng)建噪聲的波形,這里是調(diào)用了取值在0~1的隨機函數(shù),用來產(chǎn)生高斯噪聲,再繪制出它的波形。

5、然后根據(jù)傅里葉變換的原則,將噪聲的時域表達轉(zhuǎn)換為頻域表達,再繪制出它的波形。

6、通過將原始信號和噪聲信號相加,即可得到混合噪聲后的信號,再調(diào)用繪圖語句畫出它的波形。

1)用mp3錄音,生成文件cricket.wav,把該文件放到matlab文件夾里面(就是你打開matlab后中間頂部的地址)。

2)使用如下程序,做波形顯示以及fft變換。

[y,Fs,bits]=wavread('cricket.wav');%讀出信號,采樣率和采樣位數(shù)。
y=y(:,1);%我這里假設(shè)你的聲音是隔聲測量系統(tǒng)雙聲道,我只取單聲道作分析,如果你想分析另外一個聲道,請改成y=y(:,2)
sigLength=length(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');
t=(0:sigLength-1)/Fs;
figure;plot(t,y);xlabel('Time(s)');

3)頻率看頻譜就有了,聲音間隔看聲音波形,周期看聲音波形。

4)關(guān)于去噪聲。

a)如果噪聲是特定頻率的周期噪聲(periodic noise),比如說50hz,那么你可以用matlab的filter,作一個低通、高通、帶通或者帶阻濾波。
b)如果聲音是高斯白噪聲。那就用自適應(yīng)濾波(adaptive filter,wiener filter)。這里涉及到對噪聲的采樣、計算特征值以及決定階數(shù)的問題。
c)幸好我們可以“耍賴”——用cool editor。用它打開wav文件,用鼠標把一段噪聲圈起來,采樣,然后直接選擇去噪就可以了。各大網(wǎng)站有介紹。

例子:matlab去除50hz噪聲。
我用電腦錄了一段聲音,里面有50hz的周期噪聲(因為受交流電干擾)。而我自己的聲音頻率最低是90hz。我使用了一個10階butterworth高通濾波器,邊帶是70hz(介于50跟90之間)。
問題是,這不能直接用。因為聲音文件的采樣率是22k,70相對于22k來說太小了。所以我得先把我的聲音欠采樣,然后再濾波,然后再插值。程序如下。

[k,Fs,bits]=wavread('mywav.wav');
k=k(:,1);
y_temp=k(1:90000);

dfactor=3;
y=dECimate(y_temp,dfactor);
[b,a] = butter(10,70/(Fs/(dfactor*2)),'high');
y=filter(b,a,y);
y=interp(y,dfactor);

sigLength=length(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

sigLength=length(y_temp);
Y = fft(y_temp,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

t=(0:sigLength-1)/Fs;
figure;plot(t,y,t,y_temp);xlabel('Time(s)');

wavplay(y,Fs);
wavplay(y_temp,Fs);

5)回放:使用wavplay函數(shù)
wavplay(y,Fs);

本文章內(nèi)容 來源于 百度知道 ,如侵犯原作者權(quán)益請及時聯(lián)系 2850832025@qq.com, 本網(wǎng)收到通知將在第一時間內(nèi)刪除本篇內(nèi)容

?
標簽: 聲音 matlab
反對 0舉報 0 收藏 0 打賞 0評論 0
?
更多>同類銷售文章
推薦產(chǎn)品
掃碼加銷售專員微信

氣體檢測儀

????13241854077
網(wǎng)站首頁 ?|? 關(guān)于我們  |  聯(lián)系方式  |  使用協(xié)議  |  版權(quán)隱私  |  網(wǎng)站地圖 ?|? 排名推廣 ?|? 廣告服務(wù) ?|? 積分換禮 ?|? 網(wǎng)站留言 ?|? RSS訂閱 ?|? 違規(guī)舉報 ?|? 京ICP備10020141號-3
?