2016年10月28日金曜日

Octaveレッスン(2)

* ファイル(*.m)に関数を定義して実行する

wavファイルを読み込んで、FFTをかけてグラフ表示する関数の例。

一行目の関数宣言には、複数の出力変数・入力変数を指定可能:
function [出力変数] = 関数名(入力変数)
ファイル名は関数名と合わせることが推奨されている。

---- sample_func.mの中身 ----
function[Y, Fs] = sample_func(wavefile)
disp('sample_func() returns FFT spectrum & sample rate')
info = audioinfo(wavefile)
[y,Fs] = audioread(wavefile);

Y=fft(y);

L = info.SampleRate
T = 1/Fs;
t = (0:L-1)*T;

P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f=Fs*(0:L/2)/L;

subplot(2,1,1)
title('spectrum')
xlabel('(Hz)')
plot(f,P1)

subplot(2,1,2)
title('magnified 500Hz-700Hz')
xlabel('(Hz)')
grid on
plot(f(500:700),P1(500:700))
end
---------------------------

* .mファイルに定義した関数を実行する

sample_func.mで定義したsample_func関数を実行する例。
ローカルディレクトリにある.mファイルが自動的に読み込まれる。
>> file='sin660.wav'
>> Y=sample_func(file);

0 件のコメント:

コメントを投稿