首頁  >  文章  >  電腦教學  >  matlab音訊處理:產生WAV格式頻譜圖和時域波形圖的程序

matlab音訊處理:產生WAV格式頻譜圖和時域波形圖的程序

王林
王林轉載
2024-01-22 19:12:061384瀏覽

matlab音訊處理:產生WAV格式頻譜圖和時域波形圖的程序

matlab做音訊檔案WAV格式的頻譜圖程式以及做時域波形圖的程

%你好,程式讀mywav.wav文件,然後顯示頻譜以及波形。注意,mywav.wav檔案不要太長,否則運算會很慢。

[y,Fs,bits]=wavread('mywav.wav');%讀出訊號,取樣率和取樣位數。

y=y(:,1);%我這裡假設你的聲音是雙聲道,我只取單聲道作分析,如果你想分析另外一個聲道,請改成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)');

基於matlab的連續訊號的頻譜分析

給個例題,自己變一下就好

fs=1000;%設定取樣頻率

N=1024;%設定資料長度

i=0:N-1;

t=i/fs;

f=100;%設定正弦訊號頻率

%產生正弦訊號

x=sin(2*pi*f*t);

subplot(231);

plot(t,x);%作正弦訊號的時域波形

#axis([0,0.01,-1,1]);

xlabel('t');

ylabel('y');

title('正弦波訊號時域波形');

grid;

%進行FFT變換並做頻譜圖

y=fft(x,N);%進行fft變換

mag=abs(y);%振幅

f=(0:N-1)*fs/N;%橫座標頻率的表達式為f=(0:M-1)*Fs/M;

subplot(232);

plot(f,mag);%做頻譜圖

axis([0,100,0,80]);

xlabel('頻率(Hz)');

ylabel('振幅');

title('正弦波訊號振幅頻譜圖');

grid;

%均方根譜

sq=abs(y);

figure(1);

subplot(233);

plot(f,sq);

xlabel('頻率(Hz)');

ylabel('均方根譜');

title('正弦波訊號均方根譜');

grid;

%功率頻譜

power=sq.^2;

figure(1);

subplot(234);

plot(f,power);

xlabel('頻率(Hz)');

ylabel('功率譜');

title('正弦波訊號功率譜');

grid;

%對數譜

ln=log(sq);

figure(1);

subplot(235);

plot(f,ln);

xlabel('頻率(Hz)');

ylabel('對數譜');

title('正弦波訊號對數譜');

grid;

%用IFFT恢復原始訊號

xifft=ifft(y);

###magx=real(xifft);### ###ti=[0:length(xifft)-1]/fs;### ###subplot(236);### ###plot(ti,magx);### ###xlabel('t');### ###ylabel('y');### ###title('透過IFFT轉換的正弦波訊號波形');### ###grid;###

以上是matlab音訊處理:產生WAV格式頻譜圖和時域波形圖的程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:docexcel.net。如有侵權,請聯絡admin@php.cn刪除