由於我無法找到自己和相關主題的解決方案,我想問問有沒有人可以給我一些提示如何解決以下問題:Matlab:在3D圖中顯示具有特定顏色編碼的2D投影作爲RGB圖像
在三維曲線圖,可以通過分配的功能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
定義了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');
其中從RGB圖像szRGBimage經由
szIndexedImage=rgb2ind(szRGBimage,hsv);
和hsv
獲得的索引圖像szIndexedImage
在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圖中顯示。可能需要額外分配3D切割的手柄(如上例中的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投影。有沒有人有一個想法如何解決這個問題? – Joachim