2012-04-25 4 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]'; 

그러나 불행히도 작동하지 않습니다. MATLAB이 해석 할 수없는 음수 값과 1을 초과하는 값으로 끝납니다.

내가

* negative numbers mean inverted=negative colour component 

하지만 matlab에에서이를 구현하는 방법을 알고하지 않는다는 show palette rgbformulae 도움을 읽을 않았다; 나는 또한 1을 초과하는 가치를 다루는 방법을 이해하지 못합니다. 누구든지 도와 줄 수 있습니까?

답변

0

한계 값을 무시하면 작동하는 것 같습니다. (http://juluribk.com/2011/05/18/843/)

pm3d303132 (pm3d303132 < 0) = 0;

pm3d303132 (pm3d303132> 1) = 1;

+0

정말 완벽하게 작동합니다. 나는 이것에 대해 직접 생각해봤을 것입니다. 정말 고마워. –