0

由于我自己找不到解决方案和相关主题,我想问一下是否有人可以给我一些提示如何解决以下问题:

在 3D 图中,通过将函数 contourf 的结果分配给图形句柄,可以将 2D 投影显示为(填充的)等高线图,如下面的 matlab 代码片段所示:

[~,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) 平面上的投影。w3contourfsz

但是,由于我想对 2D 投影使用特定的颜色编码,因此(填充的)等高线图似乎不是合适的解决方案。相反,在应用所需颜色编码的过程后,将 2D 投影作为 RGB 图像给出。

因此我尝试使用 function 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);

hsv是 HSV 颜色图。

运行程序导致错误信息

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 仅返回一个输出(句柄)。因此,虽然使用 contourf 这意味着“不返回轮廓矩阵,而是返回句柄”,但使用 mapshow 它没有意义。

只需将 [~,h2] 替换为 h2 即可消除您当前遇到的错误。

于 2013-07-29T10:50:16.883 回答