Я хочу преобразовать любое число 0<=f<=1
в код rbg, заданный четырьмя категориями green, yellow, orange and red
.Я могу добиться этого с помощью следующей функции:
function [rgb,myColor]=colorCode(f)
cm = [0 1 0;1 1 0;255/255 153/255 51/255;1 0 0];
colorID = max(1, sum(f > [0:1/length(cm(:,1)):1]));
myColor = cm(colorID, :);
rgb = uint8(myColor*255+0.5);
Теперь я хотел бы сделать 2 улучшения:
1.- Выше код разделит интервал [0,1]в четырех равных частях, то есть:
[0,0.25]>green
[0.25,0.5]>yellow
[0.5,0.75]>orange
[0.75,1]>red
Но я хотел бы определить пользовательские интервалы, например:
[0,0.3]>green
[0.3,0.5]>yellow
[0.5,0.7]>orange
[0.7,1]>red
2.- Я хотел бы, чтобы переход между цветовыми интерваламибыть более гладким.Прямо сейчас между 0,25 и 0,26 цвет внезапно меняется с зеленого на желтый.Идея состояла бы в том, чтобы перейти от зеленого к желто-зеленому к желто-зеленому до желтого, и аналогично для других переходов.Теперь мне нужно добавить больше строк в матрицу цветовой карты cm, но я понятия не имею, как ....