2013-07-29 40 views
0

由於我無法找到自己和相關主題的解決方案,我想問問有沒有人可以給我一些提示如何解決以下問題: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的參數w1w3定義了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". 

非常感謝您的任何想法,可以幫助我解決這個問題。

最好的問候,

約阿希姆

+0

現在錯誤再也沒有出現。謝謝!但是,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

回答

0

您調用帶有輸出參數mapshow 「[〜,H 2]」,但只mapshow返回一個輸出(手柄)。因此,雖然contourf這意味着「不返回輪廓矩陣,返回句柄」,與地圖顯示它沒有任何意義。

只要用h2代替[〜,h2]就可以消除你當前得到的錯誤。