【发布时间】:2013-07-29 09:25:46
【问题描述】:
由于我自己找不到解决方案和相关主题,我想问一下是否有人可以给我一些提示如何解决以下问题:
在 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');
函数contourf 的参数w1 和w3 定义了3D 图的x 轴和y 轴,而sz 包含了三维数据集在(x, y)-平面。
但是,由于我想对 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);
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".
非常感谢任何可以帮助我解决此问题的想法。
最好的问候,
约阿希姆
【问题讨论】:
-
现在该错误不再出现。谢谢!但是,2D 投影仍未显示在 3D 图中。可能需要将 2D 切割的手柄(例如上例中的 h2)附加到 3D 坐标系。可能是我当前的 3D 表示代码 ha=gca; set(gca,... 'XLim',sort([w1(1),w1(end)]),... 'YLim',sort([w3(1),w3(end)]),.. . 'ZLim',sort([w5(1),w5(end)])); daspect([100 100 4]);视图(3); camproj(projection_type);干扰显示 2D 投影。有谁知道如何解决这个问题?
标签: image matlab graphics 3d 2d