HPIで認識した点の表示
loadmatfile(xgetfile('*.mat'));//evokd or raw fiff読み込み
でデータを読み込んだとします。HPIで認識された点の情報は変数DigitPtsにあります。
MATLABではplot3を使えば点表示はあっさりできるのですが、
SCILABのplot3dではどうもうまく表示できません。そこでparam3dを使います。
scf();param3d(DigitPts(:,1),DigitPts(:,2),DigitPts(:,3));
h=gca();h.children.mark_mode='on'; //axes.polyline 線表示->点表示に
h.children.mark_size=3; //点の大きさを3に
h.children.foreground=5; //点を赤に
h.isoview='on'; //縦横高さを1:1:1に
h.box='off';h.rotation_angles=[70,10];
次にセンサーと重ね合わせてみます。
頭座標とセンサー座標間の変換行列は変数MEG2HEADです。センサー情報はChInformです。
P=MEG2HEAD(1:3,1:3)*ChInform(1:3,1:3:304)+MEG2HEAD(1:3,4)*ones(1,102);
X=MEG2HEAD(1:3,1:3)*ChInform(4:6,1:3:304);
Y=MEG2HEAD(1:3,1:3)*ChInform(7:9,1:3:304);
X=14/1000*X;Y=14/1000*Y;
Q=zeros(3,102,4);
Q(:,:,1)=P+X+Y;
Q(:,:,2)=P+X-Y;
Q(:,:,3)=P-X-Y;
Q(:,:,4)=P-X+Y;
Qx=matrix(Q(1,:,:),102,4);
Qy=matrix(Q(2,:,:),102,4);
Qz=matrix(Q(3,:,:),102,4);
plot3d(Qx',Qy',Qz');
h=gca();h.isoview='on';h.rotation_agnles=[70,10];
残念ながらMatlabのalphaに相当する、透明度を調整する機能はないようです。
plod3dではFac3dというobjectが作られ、param3dではPolylineというobjectが作られます。
Fac3dは基本的には面表示を、Polylineは線表示を行うもののようです。