Можно ли изменить масштаб «цветовой карты» в Matlab?

Проблема с чтением строк в первом проходе и внесением изменений (удаление определенных строк) во втором проходе заключается в том, что если размеры файлов огромны, у вас закончится ОЗУ. Вместо этого лучший подход состоит в том, чтобы читать строки один за другим и записывать их в отдельный файл, исключая те, которые вам не нужны. Я использовал этот подход с файлами размером до 12-50 ГБ, а использование ОЗУ остается практически неизменным. Только циклы процессоров показывают, что обработка продолжается.

2
задан EBH 22 January 2019 в 08:26
поделиться

3 ответа

Вы используете неправильную функцию для поставленной задачи.
imshow ожидает ввода массива N by M на 3 из каналов RGB изображения. Когда вы используете 2D-матрицу, функция предполагает, что это изображение в градациях серого (это похоже на репликацию его на 3 идентичные матрицы для создания этих трех каналов - если все каналы в RGB имеют одинаковые значения, вы получаете цвета в градациях серого). Вы можете использовать эту функцию вместе с картой цветов , чтобы получить цветную матрицу, но есть гораздо более удобные альтернативы.

Одной простой функцией для получения цветного представления матрицы является imagesc или ( image , если вы хотите масштабировать значения самостоятельно). Эта функция принимает значения в вашей матрице и назначает им цвет из выбранной вами цветовой карты:

A = rand(10);
figure; colormap(jet); imagesc(A);

imagesc result

Другой вариант - pcolor , который работает немного по-другому, но дает аналогичный результат. pcolor прикрепляют значения к вершинам ячеек (в противоположность центру, как это делает imagesc) и интерполируют цвет в каждой ячейке из ее вершин. Полученная цветная матрица всегда меньше в одной строке и одном столбце, потому что для определения n промежутков (ячеек в цветной матрице) требуется n + 1 точек (значений в исходной матрице) ). Вот пример:

A = rand(10);
figure; colormap(jet); pcolor(A);
shading flat

pcolor result

0
ответ дан EBH 22 January 2019 в 08:26
поделиться

Вы можете указать масштабирование цветовой карты и количество фактических цветов в цветовой карте следующим образом:

figure; imshow( A, [0 1], 'Colormap', jet(100) );
figure; imshow( B, [0 100], 'Colormap', jet(100) );

Струя (100) указывает 100 уникальных цветов в используемой цветовой карте.

0
ответ дан Morc 22 January 2019 в 08:26
поделиться

Просто нормализуйте матрицу по ее максимальному значению, если значения больше 1. Поэтому для вашей матрицы B попробуйте:

imshow(B/max(B(:)))
0
ответ дан k-war 22 January 2019 в 08:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: