Мне нужно смоделировать лесной пожар и для этого мне нужна карта цветов.
Цветовая карта имеет 51 строку, которая выглядит следующим образом:
Первые 10 - это градиент от темно-зеленого до желтого, и строки генерируются:
uint8color = [4 112 31];
for i = -1:8
cmap = double(uint8(uint8color + i*[30 27 3])) / 255
end;
Следующая синяя линия:
cmap(11, :) = [0 0.5 0.9];
А оставшиеся 40 строк переходят от желтого к красному почти к черному, что делается следующим образом:
for i=19:-1:-20
farve = double(uint8(uint8farve + i*[12 12 5])) / 255;
end;
Это прекрасно работает, однако я бы хотел избегать использования циклов везде, где это возможно, и пытаться использовать компактные операции с массивами, которые Matlab способен выполнять
Я довольно застрял с вышесказанным, не понимая, как (и если) я могу использовать компактную нотацию, но при этом иметь индекс под рукой.
Для первых 10 строк, что-то вроде:
cmap(1:10, :)
Заменил бы цикл for, но мне потребовалось бы каким-то образом извлечь индекс и вычесть 2 из значения (1:10 -> -1: 8)
Я надеюсь, что где-нибудь есть гуру Матлаб, который может указать мне правильное направление
Заранее спасибо