Как создать цветовую карту из существующего набора данных в Matlab? - PullRequest
0 голосов
/ 05 мая 2019

В настоящее время у меня есть двухмерный контурный график в Matlab из существующего набора данных. Я сделал сетку [x, y] и использовал эту сетку и z-данные для создания двухмерного контурного графика с использованием contourf (x, y, z). Моя цель - воспроизвести эти же данные в виде цветовой карты с плавными цветовыми градиентами, а не в виде двухмерного контурного графика с четкими цветными полосами.

Я попытался использовать imagesc (x, y, z) с [x, y] в качестве сетки и без. Я закончил с ошибкой функции «Попытка выполнить SCRIPT imagesc как функцию:» ​​

x = 0.1:0.1:1
y = 0.1:0.1:1
[X, Y] = meshgrid( x , y )
Z = #data#
contourf( X , Y , Z )
title
xlabel
ylabel

1 Ответ

0 голосов
/ 05 мая 2019

Я не совсем уверен, что не так с вашей попыткой использовать imagesc ... Когда я использовал ваши x и y и определил Z=sin(X*20)+sin(Y*20); и побежал imagesc(x,y,Z), я получил

enter image description here

Глядя на полученное сообщение об ошибке, я подозреваю, что у вас где-то есть скрипт, сохраненный как imagesc, который каким-то образом перезаписывает функцию imagesc. Попробуйте запустить edit imagesc и посмотрите, что получится, это функция?

Теперь, чтобы сделать этот гладкий вид, у вас есть два варианта. Во-первых, вы можете просто использовать более высокую плотность точек, а не сетку 10х10. Например

x = linspace(0,1,1000);
y = linspace(0,1,1000);
[X, Y] = meshgrid( x , y );
Z=sin(X*20)+sin(Y*20);
imagesc(x,y,Z)

дает enter image description here

В качестве альтернативы, если вы хотите / должны придерживаться низкой плотности точек, вы можете использовать pcolor(X,Y,Z), а затем установить shading interp, что дает

enter image description here

...