2012-04-25 99 views
2

我想在Matlab中實現一個顏色條,看起來是線性的,當打印成灰色時。我認爲最直接的方法是實現gnuplot pm3d 30,31,32 RGB色彩空間。在this website我找到了一個很好的介紹,它適用於一些更簡單的gnuplot方案。但是,當試圖實施30,31,32計劃時,我遇到了麻煩。Matlab色彩重現gnuplot pm3d 30,31,32 RGB色彩空間

的gnuplot的指令

30: x/0.32-0.78125 31: 2*x-0.84  32: 4x;1;-2x+1.84;x/0.08-11.5 

我解釋這使得對於藍色通道我需要去申請四個不同的方程。每個強度值的四分之一。這是我迄今爲止所嘗試的

x  = linspace(0,1,128); 
r        = x/0.32-0.78125; 
g        = 2*x-0.84; 
b(1:length(x)/4)    = 4*x(1:length(x)/4); 
b(length(x)/4:length(x)/2)  = 1; 
b(length(x)/2:length(x)*.75) = -2*x(length(x)/2:length(x)*.75)+1.84; 
b(length(x)*.75:end)   = x(length(x)*.75:end)/0.08-11.5; 
pm3d303132=[r;g;b]'; 

但不幸的是它不起作用。我最終得到的是負值和超過1的值,這是Matlab無法解釋的。

我沒有在show palette rgbformulae幫助,

* negative numbers mean inverted=negative colour component 

但我不知道如何在Matlab實現這個閱讀;我也不明白如何處理超過1的值。任何人都可以幫忙嗎?

回答

0

忽略超出限制值似乎工作。 (http://juluribk.com/2011/05/18/843/)

pm3d303132(pm3d303132 < 0)= 0;

pm3d303132(pm3d303132> 1)= 1;

+0

完美的,這確實有效 - 我應該自己想一想。非常感謝。 – 2012-07-05 08:05:08