2011-02-23 8 views
5

私はMATLABを使用して3Dデータを表示しています。私は、GUIを使用して、ビューアングル、ズーム、パンに変更します。このビューを保存し、後でそれを他の図に適用するにはどうすればよいですか(多かれ少なかれ同じデータを含む)? viewは私に行列を与えますが、これを他の人物にどのように適用できますか?MATLAB 3Dビューポートを保存

ありがとうございます!

答えて

5

別の図に、現在の画角を使用するには、あなたができる:

% call when the source axes is the current axes 
[az, el] = view; 
% call when the target axes is the current axes 
view (az, el); 

それとも、あなたはview財産のgetsetを使用して同じことを行うことができます。 >Generate m-file - fileに行く、あなたは3Dを持っているとき、あなたがそれを望むように把握 -

しかし、あなたが一緒に言及したすべてのビューのプロパティを適用するために、MATLABの組み込みオプション「m個のファイルを生成する」を使用する方が簡単です3Dデータを入力として取得し、設定を適用するmファイルが作成されます。 (ターゲット軸と仮定すると、現在のものです)

plot3(sin(t),cos(t),t); 
pba = get(gca, 'PlotBoxAspectRatio'); 
dar = get(gca, 'DataAspectRatio'); 
cva = get(gca, 'CameraViewAngle'); 
cuv = get(gca, 'CameraUpVector'); 
ct = get(gca, 'CameraTarget'); 
cp = get(gca, 'CameraPosition'); 

し、現在の軸にそれを適用するには:

別のオプションは、これらの関連する設定を自分で(ちょうど生成されたMファイルを検査)保存することです。

set(gca, 'PlotBoxAspectRatio',pba); 
set(gca, 'DataAspectRatio',dar); 
set(gca, 'CameraViewAngle',cva); 
set(gca, 'CameraUpVector',cuv); 
set(gca, 'CameraTarget',ct); 
set(gca, 'CameraPosition',cp); 
2

ビューを保存して適用するには、Itamar's answerを参照してください。

ズームとパンでは、軸の制限を保存するだけで済みます。 get/setでxlim、ylim、zlimまたは対応する軸プロパティ(XLimなど)を使用します。限界値を格納するための現在の軸の

xl = xlim; 
yl = ylim; 
zl = zlim; 

またはAxesの特性を有する:

xl = get(gca,'XLim'); 

別の図形に軸に適用する:

xlim(new_axes_handle,xl) % you can skip new_axes_handle for current axes 
ylim(new_axes_handle,yl) 
zlim(new_axes_handle,zl) 

または

set(new_axes_handle,'XLim',xl,'YLim',yl','ZLim',zl) 
ところで

、Itamarの答えに加えて、あなたはすべての構造に一度のAxesプロパティを取得することができます:あなたは新しい軸に適用したくないフィールドを削除

ax_properties = get(gca); 

、 SETを使用してください:

set(new_axes_handle,ax_properties) 

構造にUserDataも含まれているので注意してください。このフィールドを最初に削除します。

rmfield(ax_properties,'UserData') 
1

OMG、手動調整とMファイル生成オプションは私のヒーローです。私が最初からわかっていたのは、これだけでした。

axes1 = axes('Parent',Plot_ele,'PlotBoxAspectRatio',[1 1.70454545454545 1.7],... 
    'DataAspectRatio',[1 1 1],... 
    'CameraViewAngle',7.48227189414101,... 
    'CameraUpVector',[-0.0256575066196788 0.989185543639328 -0.144407938178721],... 
    'CameraTarget',[255.013054349713 397.874703616223 449.003273637903],... 
    'CameraPosition',[1445.8877301745 1407.25270740567 7151.59363497921]); 
    % xlim(axes1,[0 528]); % uncomment to preserve axes x-limits 
    % zlim(axes1,[0 897.6]); % uncomment to preserve axes z-limits 
hold(axes1,'all');