0

私自身と関連トピックで解決策を見つけることができなかったので、誰かが次の問題を解決する方法のヒントを教えてくれるかどうか尋ねたいと思います:

3D プロットでは、次の matlab コード フラグメントのように、関数 Contourf の結果をグラフィックス ハンドルに割り当てることにより、2D 投影を (塗りつぶされた) 等高線図として表示できます。

[~,h2]=contourf(w1,w3,sz,level_list2,'LineWidth',1);

h2=findobj(h2,'type','patch');

for j=1:length(h2),

     zd=w5(1).*ones(size(get(h2(j),'XData')));

     set(h2(j),'ZData',zd);

end

set(h2,'FaceLighting','none');

関数の引数w1とは、3D プロットの x 軸と y 軸を定義し、(x,y) 平面への 3 次元データ セットの投影を含みます。w3contourfsz

ただし、2D 投影に特定の色エンコードを使用したいので、(塗りつぶされた) 等高線図は適切な解決策ではないようです。むしろ、2D 投影は、目的のカラー エンコーディングの手順を適用した後、RGB イメージとして与えられます。

mapshowしたがって、この場合により適切と思われる関数を使用しようとしました。次に、対応するコードフラグメントが読み取ります

[~,h2]=mapshow(w1,w3,szIndexedImage,hsv);

h2=findobj(h2,'type','patch');

for j=1:length(h2),

    zd=w5(1).*ones(size(get(h2(j),'XData')));

    set(h2(j),'ZData',zd);

end

set(h2,'FaceLighting','none');

ここで、インデックス付き画像 szIndexedImage は、次の方法で RGB 画像 szRGBimage から取得されます。

szIndexedImage=rgb2ind(szRGBimage,hsv);

hsvHSV カラー マップです。

プログラムを実行するとエラー メッセージが表示される

Error in `mapshow` (line 214)
error(nargchk(1,Inf,nargin,'struct'))

Output argument "varargout" (and maybe others) not assigned during call to
"/usr/local/MATLAB/R2012a/toolbox/map/map/mapshow.m>mapshow".

この問題を解決するのに役立つアイデアをありがとう。

よろしくお願いします、

ヨアヒム

4

1 に答える 1

0

出力引数 "[~,h2]" を指定して mapshow を呼び出していますが、mapshow は 1 つの出力 (ハンドル) しか返しません。したがって、contourf では「等高線行列を返さず、ハンドルを返す」ことを意味しますが、mapshow では意味がありません。

[~,h2] を h2 に置き換えるだけで、現在発生しているエラーが解消されます。

于 2013-07-29T10:50:16.883 に答える