センサー3D表示
Fiff2Sci.exeでFiff fileを変換してChInformなる変数を得たとします。
Ch=ChInform(:,1:3:304);
wd=0.014;P=Ch(1:3,:);X=wd*Ch(4:6,:);Y=wd*Ch(7:9,:);
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)'; //X座標だけ抽出
Qy=matrix(Q(2,:,:),102,4)'; //Y座標だけ抽出
Qz=matrix(Q(3,:,:),102,4)'; //Z座標だけ抽出
plot3d(Qx,Qy,Qz); // 3D表示
とするとセンサーが表示されます。
縦・横・高さの比を1:1:1にするには、
h=set(gca(),'isoview','on');
とするか、Edit->Current Axes PropertiesからAxes Editorを呼び出し、
AspectタブないのIsoview:をonにすると縦・横・高さが1:1:1になります。
set(gca(),'box','off');
とするとboxが消えます。
set(gca(),'axes_visible','off');
とすると座標軸が消えます。
Toolboxの回転マークを押すと回転します(1回きり)。
magnetometer、planar type gradiometerの情報を加えたもう少しかっこいいのを作ります。
ここではparam3dという関数を使います。
scf();h=gcf();
plot3d(Qx,Qy,Qz); //上記と同じです
h.children.box='off';//Figure.Axes
h.visible='off';
h.children.children.color_mode=8; //Figure.Axes.Fac3dの表面を白
h.children.children.hiddencolor=8;//裏面も白
h.children.margins=[0,0,0,0];
h.visible='on';
md=1;nd=0.95;wd=0.85;zd=0.1;
P=P+0.0003*Ch(10:12,:); //0.3mm浮かせます;
Q=zeros(3,102,13); //Horizontal Gradiometer
Q(:,:,1)=P+zd*X;
Q(:,:,2)=P+zd*X+nd*Y;
Q(:,:,3)=P+wd*X+nd*Y;
Q(:,:,4)=P+wd*X-nd*Y;
Q(:,:,5)=P+zd*X-nd*Y;
Q(:,:,6)=P+zd*X-zd*Y;
Q(:,:,7)=P-zd*X+zd*Y;
Q(:,:,8)=P-zd*X+nd*Y;
Q(:,:,9)=P-wd*X+nd*Y;
Q(:,:,10)=P-wd*X-nd*Y;
Q(:,:,11)=P-zd*X-nd*Y;
Q(:,:,12)=P-zd*X;
Q(:,:,13)=Q(:,:,1);
h.visible='off';for n=1:102;...
param3d(matrix(Q(1,n,:),1,13)',matrix(Q(2,n,:),1,13)',matrix(Q(3,n,:),1,13)');...
end;h.children.children(1:102).foreground=2;h.visible='on';
K=X;X=Y;Y=K;
Q=zeros(3,102,13); //Transverse Gradiometer
Q(:,:,1)=P+zd*X;
Q(:,:,2)=P+zd*X+nd*Y;
Q(:,:,3)=P+wd*X+nd*Y;
Q(:,:,4)=P+wd*X-nd*Y;
Q(:,:,5)=P+zd*X-nd*Y;
Q(:,:,6)=P+zd*X-zd*Y;
Q(:,:,7)=P-zd*X+zd*Y;
Q(:,:,8)=P-zd*X+nd*Y;
Q(:,:,9)=P-wd*X+nd*Y;
Q(:,:,10)=P-wd*X-nd*Y;
Q(:,:,11)=P-zd*X-nd*Y;
Q(:,:,12)=P-zd*X;
Q(:,:,13)=Q(:,:,1);
h.visible='off';for n=1:102;...
param3d(matrix(Q(1,n,:),1,13)',matrix(Q(2,n,:),1,13)',matrix(Q(3,n,:),1,13)');...
end;h.children.children(1:102).foreground=13;h.visible='on';
Q=zeros(3,102,9); //Magnetomeer
Q(:,:,1)=P+zd*X;
Q(:,:,2)=P+zd*X+md*Y;
Q(:,:,3)=P+md*X+md*Y;
Q(:,:,4)=P+md*X-md*Y;
Q(:,:,5)=P-md*X-md*Y;
Q(:,:,6)=P-md*X+md*Y;
Q(:,:,7)=P-zd*X+md*Y;
Q(:,:,8)=P-zd*X;
Q(:,:,9)=Q(:,:,1);
h.visible='off';for n=1:102;...
param3d(matrix(Q(1,n,:),1,9)',matrix(Q(2,n,:),1,9)',matrix(Q(3,n,:),1,9)');...
end;h.children.children(1:102).foreground=5;h.visible='on';
h.children.box='off';
h.children.isoview='on';//最後でないと無効
h.children.rotation_angles=[70,10];
多少デフォルメしています。赤がmagnetometer、青が水平方向のgradiometer、緑が上下方向のgradiometerです。角度を変えます。
h.children.rotation_angles=[45,-45];
バグがあるようで、ところどころコイルの線が消えています。