2012-04-25 14 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 

であり、Iは、青色チャネルのためにIは、4つの異なる式を適用しなければならないことが、このような解釈しました。強度値の4分の1ごとに1つ。これまで私が試したことです。

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;

pm3d303132(pm3d303132> 1)= 1;

+0

完璧な、それは確かに動作します - 私はこれについて自分自身について考えるべきでした。本当にありがとう。 –

関連する問題