Это простая, но распространенная задача, необходимая при попытке исправить цветовую карту в соответствии с 2D-матрицей значений.Для демонстрации рассмотрим проблему в Matlab , решение не обязательно должно быть в Matlab (т. Е. Код, представленный здесь, предназначен только для демонстрационных целей).
<code>
x = [0,1,2; 3,4,5; 6,7,8];
imagesc(x)
axis square
axis off
Таким образом, выходные данные выглядят так:
![enter image description here](https://i.stack.imgur.com/96dhI.png)
, когда некоторые значения изменяются сверх максимального значения, это выглядит так:
<code>
x = [0,1,2; 3,4,5; 6,7,18];
, что выглядит логично, но создает проблемы, когда мы хотим сравнить/ трассировать элементы на двух картах.Так как ассоциация цветовой карты изменена, почти невозможно найти отдельную ячейку для сравнения / трассировки и т. Д.
![enter image description here](https://i.stack.imgur.com/FajA0.png)
Решение, которое я реализовал, состоит в том, чтобы замаскировать матрицу как:
<code>
x = [0,1,2; 3,4,5; 6,7,18];
m = 8;
x(x>=m) = m;
, которая работает идеально.
Поскольку предоставленный код требует поиска / фильтрации (это отнимает много времени!), Мне интересно, существует ли
общий / более эффективный способ для реализации этого задания в
Matlab ,
Python и т. Д.
Один из случаев, когда возникает эта проблема, - когда у нас много последовательных симуляций, и мы хотим сделать разумную анимацию прогресса;в этом случае каждый цвет должен сохранять свою связь фиксированной.