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