這個問題需要旋轉一個3D矩陣給出的圖像,其中第一維是寬度,第二維是高度,第三維包含x,y,z座標。MATLAB:旋轉我的數據後的衝浪圖
目前我使用下面的代碼
Fig.sub1im=surf(ToFparam.ROI.XYZ(:,:,1),ToFparam.ROI.XYZ(:,:,2),ToFparam.ROI.XYZ(:,:,3),zeros(ToFparam.ROI.height,ToFparam.ROI.width,3));
現在繪製的表面,我有一個3 d矩陣,其中這是一個100x50x3。所有的x數據都在第三維的第一個頁面或圖層中,y是第二個圖層... z第三個圖層。現在我需要在xy和z數據上應用3x3旋轉矩陣。我知道如何重塑一個矩陣來做到這一點,我認爲....只是把它放到一個3行... 50000列矩陣,然後應用矩陣。
接下來我需要在一個循環中更新我的圖。然後我會做下面的事情,其中我還包括了我的新矩陣計算。
ToFparam.ROI.XYZ_Vector = ToFparam.ROI.XYZ;
ToFparam.ROI.XYZ_Vector = reshape(ToFparam.ROI.XYZ, [size(ToFparam.ROI.XYZ,1)*size(ToFparam.ROI.XYZ,2),3]);
ToFparam.ROI.XYZ_Vector = ToFparam.ROI.XYZ_Vector';
ToFparam.ROI.XYZ_DICOM = inv(DICOMparam.calib.navi2dicom(1:3,1:3))*inv(Naviparam.data.Endo_RefHomMat(1:3,1:3))*ToFparam.ROI.XYZ_Vector;
%refresh plot standard cuts
set(Fig.sub1im,'CData', Color);
set(Fig.sub1im, 'XData', ToFparam.ROI.XYZ_DICOM(1,:) + DICOMPos(1)/Fig.sub2samp);
set(Fig.sub1im, 'YData', ToFparam.ROI.XYZ_DICOM(2,:) + DICOMPos(2)/Fig.sub2samp);
set(Fig.sub1im, 'ZData', ToFparam.ROI.XYZ_DICOM(3,:) + DICOMPos(3)/Fig.sub2samp);
當我更新我的情節,我沒有得到任何錯誤,但它看起來並不像它正確繪製它。它似乎對我的數據造成了巨大的偏移,並將它置於某個我不希望定位的地方。我不會期望旋轉矩陣會影響縮放,只是方向。讓我知道是否有任何更快/更好的方式來完成這個衝浪情節,謝謝!