ホームページ > 記事 > コンピューターのチュートリアル > matlab オーディオ処理: WAV 形式のスペクトログラムと時間領域波形を生成するプログラム
%こんにちは。このプログラムは mywav.wav ファイルを読み取り、スペクトルと波形を表示します。 mywav.wav ファイルが長すぎないように注意してください。長すぎないと、動作が非常に遅くなります。
[y,Fs,bits]=wavread('mywav.wav');% 信号、サンプリング レート、サンプリング ビットを読み取ります。
y=y(:,1);%ここではあなたの声が 2 チャンネルであると仮定します。分析にはモノラル チャンネルのみを使用します。別のチャンネルを分析したい場合は、それを y=y(: ,2)
sigLength=長さ(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:半分の長さ)/sigLength;
figure;plot(f,Pyy(1:halflength 1));xlabel('周波数(Hz)');
t=(0:sigLength-1)/Fs;
図;プロット(t,y);xlabel('時間');
例を示します。自分で変更してください。
fs=1000;%サンプリング周波数の設定
N=1024;%データ長を設定
i=0:N-1;
t=i/fs;
f=100;%正弦波信号の周波数を設定します
%正弦波信号を生成する
x=sin(2*pi*f*t);
サブプロット(231);
plot(t,x);% は正弦波信号の時間領域波形を作成します
軸([0,0.01,-1,1]);
xlabel('t');
ylabel('y');
title('正弦波信号の時間領域波形');
###グリッド;###%FFT変換を実行してスペクトログラムを作成します
y=fft(x,N);% fft 変換を実行します
mag=abs(y);% 振幅
f=(0:N-1)*fs/N; %横軸周波数の表現は f=(0:M-1)*Fs/M;
サブプロット(232);
plot(f,mag);% スペクトログラムを作成します
軸([0,100,0,80]);
xlabel('周波数 (Hz)');
ylabel('大きさ');
title('正弦波信号振幅スペクトル図');
###グリッド;###%二乗平均平方根スペクトル
sq=abs(y);
###図1);###サブプロット(233);
プロット(f,sq);
xlabel('周波数 (Hz)');
ylabel('二乗平均平方根スペクトル');
title('正弦波信号の二乗平均平方根スペクトル');
###グリッド;###%パワースペクトル
power=sq.^2;
###図1);###サブプロット(234);
プロット(f,べき乗);
xlabel('周波数 (Hz)');
ylabel('パワースペクトル');
title('正弦波信号のパワースペクトル');
###グリッド;###%対数スペクトル
ln=log(sq);
###図1);###サブプロット(235);
プロット(f,ln);
xlabel('周波数 (Hz)');
ylabel('ログスペクトル');
title('正弦波信号の対数スペクトル');
###グリッド;###%IFFT を使用して元の信号を復元する
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
サブプロット(236);
プロット(ti,magx);
xlabel('t');
ylabel('y');
title('IFFT変換した正弦波信号波形');
###グリッド;###以上がmatlab オーディオ処理: WAV 形式のスペクトログラムと時間領域波形を生成するプログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。