Я хочу преобразовать любое число 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, но я понятия не имею, как....
interp1
. Я понимаю, что это не полный ответ на ваш вопрос. - person SecretAgentMan   schedule 29.03.2019