2017-11-12 16 views
1

私は色を付けたい表面を持っています。 Z値は、-10〜2の範囲100×100行列から取得され、そして私は異なる表面プロット上まったく同じカラーマップを使用する場合、今z値に基づいてz値に色を設定します

If z is between -10 and -9, color [1 0 0] 
If z is between -9 and -8, color [.9 0 0] 
.... 
If z is between -1 and 0, color [.1 0 0] 
If z is between 0 and 1, color [0 0 .5] 
If z is between 1 and 2, color [0 0 1] 

の線に沿って何かをしたいです。ここでも、これらの新しいZ値は、100x100の行列から取られているが、その値は唯一私が

If z is between -5 and -4, color [.5 0 0] 
If z is between -4 and -3, color [.4 0 0] 
.... 
If z is between -1 and 0, color [.1 0 0] 
If z is between 0 and 1, color [0 0 .5] 

をしたい、だから、-5から1までの範囲で手動で新しいカラーマップを定義せずにこれを達成する方法はあります色をつけたいと思う新しい表面があるたびに? (自動的に現在処理中の範囲のデータをもとに現在の色を算出し、ループの中にそれを翻訳するため、)私はあなたのカラーマップの基本的なパターンを理解することはできませんので

+0

は、関数の中で、これらの条件を囲み、あなたは新しい表面をプロットする必要がある場合、その関数を呼び出します。 –

答えて

1

、私はこれをお勧めします:

値とその各色取得するには
z_1 = randi([-10 2],100); 
cmap_1 = cell(size(z_1)); 
cmap_1(z_1 < -9) = {[1.0 0.0 0.0]}; 
cmap_1(z_1 >= -9 & z_1 < -8) = {[0.9 0.0 0.0]}; 
% ... 
cmap_1(z_1 >= -1 & z_1 < 0) = {[0.1 0.0 0.0]}; 
cmap_1(z_1 >= 0 & z_1 < 1) = {[0.0 0.0 0.5]}; 
cmap_1(z_1 >= 2) = {[0.0 0.0 1.0]}; 

z_2 = randi([-5 1],100); 
cmap_2 = cell(size(z_2)); 
cmap_2(z_2 < -4) = {[0.5 0.0 0.0]}; 
cmap_2(z_2 >= -4 & z_2 < -3) = {[0.4 0.0 0.0]}; 
% ... 
cmap_2(z_2 >= -1 & z_2 < 0) = {[0.1 0.0 0.0]}; 
cmap_2(z_2 >= 0) = {[0.0 0.0 0.5]}; 

my_z = z_1(2,19); 
my_col = cmap_1{2,10}; 
関連する問題