Я пытаюсь реализовать цветную панель в Matlab, которая выглядит линейной при печати серым цветом. Самый прямой подход, я бы хотел реализовать цветовое пространство gnuplot pm3d 30,31,32 RGB. На this website Я нашел хорошее введение, которое работает нормально для некоторых более простых схем gnuplot. Однако при попытке реализовать схему 30,31,32 я столкнулся с проблемой.Matlab colormap воспроизводящий 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
И я интерпретировал это такое, что для синего канала я должен применить четыре уравнения. Один за каждую четверть значений интенсивности. Это то, что я пробовал до сих пор
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]';
, но, к сожалению, он не работает. Я заканчиваю отрицательными значениями и значениями, превышающими 1, которые Matlab не может интерпретировать.
Я прочитал в show palette rgbformulae
помощи,
* negative numbers mean inverted=negative colour component
Но я не знаю, как реализовать это в Matlab; и я также не понимаю, как справляться со значениями, превышающими 1. Может ли кто-нибудь помочь?
Отлично, это действительно работает - я должен был подумать об этом сам. Спасибо. –