跳至內容

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

更新時間
连续6年不跑路的安全速度最适合国人VPN
连续6年不跑路的安全速度最适合国人VPN

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格式頻譜圖和時域波形圖的程序的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。