scilabでフーリエ解析
scilabはMATLABと文法や関数名が違うので敬遠してきたが、調べてみると評判がよいので、試してみた。
参考にしたページ
http://meg.aalip.jp/scilab/index.html 非公式広島大学病院脳磁図室ホームページSCILAB篇
http://www.ecl.sys.hiroshima-u.ac.jp/scilab/index.html Scilab日本語ドキュメント
http://www-ec.denki.numazu-ct.ac.jp/scilab/index.html Scilab つかいませんか
フーリエ解析をするSCIファイルを作る。
fftplot.sci
function [result,freqlist]=fftplot(data,Fs) fftdata=fft(data); freqlist=linspace(0,1,length(data))*(Fs-Fs/length(data)); plot2d(freqlist,abs(fftdata),logflag="nl"); a=get("current_axes"); a.data_bounds=[0,min(abs(fftdata)); Fs/2,max(abs(fftdata))]; xlabel('Frequency[Hz]'); result=fftdata; endfunction
テストプログラム test01.sce
exec("fftplot.sci"); t=linspace(0,1,1000+1); freqlist=[100 200 300]; Fs=1000; sig=sin(2*%pi*t*freqlist(1))+0.7*sin(2*%pi*t*freqlist(2))+0.8*sin(2*%pi*t*freqlist(3)); scf subplot(211); plot2d(t,sig); ax=get("current_axes"); m=max(abs(sig)); ax.data_bounds=[0 -m; 0.2 m]; subplot(212); fftplot(sig,Fs);