scilabでフーリエ解析

ikeuchihiroki2007-12-31

scilabMATLABと文法や関数名が違うので敬遠してきたが、調べてみると評判がよいので、試してみた。

参考にしたページ
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);