周波数解析3
MATLABの関数imageに相当するのはMatplotです。最初は大文字にします。
loadmatfile(xgetfile('*.mat'));
meg=CalXRnge(235)*double(raw_data(235,:));//MEG 2113の信号
周波数解析2で作ったsfft.sceを使います。
getf('.../sfft.sce');
[B,F,T]=sfft(meg,2^10,CalXRnge($),'hn',2^9);
B=abs(B.*conj(B));
B=B/(1e+7)*256;
B(B>256)=256;//257以上の値は白に表示されるため
scf();Matplot(B);
set(gcf(),'color_map',jetcolormap(256));
h=gca();h.tight_limits='on';
h.children.data=h.children.data($:-1:1,:);//Axes.Matplot y軸反転
xtitle('frequency analysis','sec','fT^2/cm^2/Hz');
,
x軸、y軸の目盛りは配列Bの行、列の数になっています。MATLABのaxes propertyでは
直接目盛りの内容を制御できるのですが、SCILABのaxes propertyにはそんな機能はありません。
そこでSCILABではaxesの代わりにaxisを用います。以下のようにします。
h=gca();h.axes_visible='off';
xtics=1:10:70;//x軸
drawaxis(x=xtics,y=0.5,dir='d',tics='v');
h.children(1).tics_labels=string(floor(T(1,xtics)*10)/10);
ytics=round(linspace(1,513,10));//y軸
drawaxis(x=0.5,y=ytics,dir='l',tics='v');
h.children(1).tics_labels=string(floor(F(1,ytics)*10)/10);
Matplotではx,yとも0.5ずつずれているので補正します。
dirは目盛りの向きでu,d,l,rがそれぞれ上向き、下向き、左向き、右向きです。
この方法だと、目盛りの数値は合うのですが、タイトル、x軸、y軸のラベル、グリッドは消えちゃうんですね。
痛し痒しです。いい解決方法があるのかもしれませんが、よくわかりません。