создать пользовательскую палитру с пользовательскими ограничениями и плавным переходом цвета в Matlab

Я хочу преобразовать любое число 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, но я понятия не имею, как....


person kurokirasama    schedule 28.03.2019    source источник
comment
Возможно, связано: управление шкалой цветовой шкалы в MATLAB, которая также ссылается на очень похожие сообщения.   -  person SecretAgentMan    schedule 28.03.2019
comment
Вы можете создать собственную цветовую карту, используя этот ответ (см. раздел Бонус) с interp1. Я понимаю, что это не полный ответ на ваш вопрос.   -  person SecretAgentMan    schedule 29.03.2019
comment
Возможный дубликат Как создать пользовательскую карту цветов программно?   -  person SecretAgentMan    schedule 29.03.2019
comment
на случай, если это всего лишь разовая попытка, и вы не хотите делать это программно, вы можете попробовать это   -  person a11    schedule 29.03.2019
comment
Спасибо, между вашими комментариями я мог заставить это работать. выложу решение   -  person kurokirasama    schedule 29.03.2019