2011-09-02 25 views
3

我有一個散點圖,其中我使用向量C來定義不同點的顏色。這裏,顏色映射的顏色線性映射到C中的數字上。我想以某種方式找到C向量中每個值的RGB值。所以我想從我的C向量中取出一個x乘以3的矩陣。任何人都知道這是否可能?colorvector的Colormatrix

最良好的祝願, 阿希姆

編輯: 感謝@Aabaz我能解決這個問題。這是我的解決方案:

colors_current = colormap; 
color = [color zeros(length(color),2)]; 
stepw = floor(length(color)/length(colors_current)); 
colorsort = sortrows(color); 
color_old = 0; 
counter = 1; 

for i = stepw:stepw:length(JAbs) 
    color_indices = find(color_old < color(:,1) & color(:,1) < color_sort(i)); 
    if counter >= length(colors_current) 
     break; 
    end 
    for j=1:length(color_indices) 
     JAbs(color_indices(j),:) = colors_current(counter,:); 
    end 
    color_old = colorsort(i); 
    counter = counter + 1; 
end 

不是最優雅的方式,但它似乎工作。

回答

2

函數colormap不帶參數使用,返回當前軸的顏色映射表作爲m×3矩陣,存儲每種顏色的RGB代碼。從那裏,你可以得到的RGB代碼爲每個元素在您的載體C.

更新:我很抱歉,我必須有誤解你的問題,因爲我不明白你正在尋找一種明確的方式來獲得rgb代碼,只是colormap和rgb代碼之間的連接。無論如何,我看到你自己找到了解決方案,做得很好。做了一個快速嘗試自己,我給你在這裏:

n=10; 
C=rand(n,1); 
map=colormap(jet); 
Cregspaced=(min(C):(max(C)-min(C))/(size(map,1)-1):max(C))'; 
Cmapindex=interp1(Cregspaced,(1:size(map,1))',C,'nearest'); 
Crgb=map(Cmapindex,:); 

這應該工作,這取決於如何Matlab的插值的顏色表的索引。您可以根據自己的解決方案對其進行測試,以查看結果是否匹配。

+0

謝謝。這幫助了很多。我會在答案中發佈我的解決方案。 – Achim

相關問題