2016-05-28 16 views
0

私のコードには375x223x91のデータセット( 'data1'と呼ばれます)があり、数字としてプロットするのが難しいです。私は正常に使用して個々のスライスをプロットすることができますデータセットの合計をプロットするMatlab

figure 
imagesc(data1(:,:,50)) 
axis image 
impixelinfo 
colormap(jet) 

% top-down view of slice 50 (of the 91 slices) of 'data1'. 

私は91個のスライスのそれぞれを合計し、トップダウンビューをプロットしたいと思いますが。私は 'forループ'を書こうとし、z方向の91スライスすべてを合計し、これをプロットしようとしましたが、エラーが発生します。あなたの助けに感謝します。ありがとう。その後

sdata = sum(data1, 3); 

あなたがすることができます

+0

どのようなエラーが発生しましたか?画像 インデックス付きのCDataサイズ[M×N個]である必要があり、トゥルーカラーのCDataが サイズ関数imagescにおける[MxNx3] エラー(線18) HH =画像(のvarargin {1}、 'CDataMapping'、 'スケーリング')でなければならない使用 – ThP

+0

エラー; –

+0

プロットする前に結果に 'squeeze'を使ってみてください。 – ThP

答えて

1

あなたはsumに寸法入力を使用する必要があり、3次元的にあなたのデータを合計したい場合(3D画像を追加し、余分な指導も理解されるであろう)正常に表示してください。

imagesc(sdata); 

は限り、3D画像をプロット使用などpcolorは、あなたがこれを行うことが一つの方法です。

p = pcolor(sdata); 
set(p, 'EdgeColor', 'none'); 

これは、画像をz = 0に配置します。位置を変更したい場合は、ZDataを変更することができます。

zvalue = 10; 
set(p, 'ZData', 0 * get(p, 'ZData') + zvalue); 

他のオプションは、画像データにtexturemapからFaceColorセットとCDataセットでsurfオブジェクトを使用することです。

s = surf(ones(2)); 
set(s, 'FaceColor', 'texturemap', 'CData', sdata); 

あなたは、3D空間内の位置を調整するために、表面のXDataYData、およびZDataを調整することができます。

関連する問題