Colormap 2D для скаляра - Matlab
Я имитирую волновое распространение во времени и месте. Я хочу сделать цветовую карту его значений для каждого шага времени в пространстве. я имею в виду, я хочу сделать фигуру из 2 осей (x и y) и отображать значения волны в этих точках по цвету (переменная волны - V). как мне это сделать? я пытался:
for ind1 = 1:length(t)
figure()
trisurf(x1,y1,V(:,ind1),'EdgeColor', 'None', 'facecolor', 'interp');
view(2);
end
но я получил сообщение, что z (=V) предполагают, что это функция, а не скаляр. какие-либо предложения?
2 ответа
У меня есть два варианта, я не думаю, что они будут идеальными, но это может помочь.
Сначала интерполируйте данные на прямоугольную сетку и используйте contourf
:
F=scatteredInterp(x,y,V(:,ind1));
X=linspace(min(x),max(x));
Y=linspace(min(y),max(y));
contourf(X,Y,F(X,Y))
Во-вторых, используйте scatter
чтобы построить точки с различным цветом:
scatter(x,y,25,V(:,ind1))
где 25 контролирует размер каждого маркера, вам, возможно, придется поэкспериментировать с ним.
Надеюсь, что это дает вам некоторые идеи.
Я сделал цикл, который наконец работает:
clear heart_movie
Vnorm = mat2gray(V(:,1:2000));
x1_new = x1-min(x1)+1;
y1_new = y1-min(y1)+1;
for ind1 = 1:2000
heart = zeros(max(x1_new),max(y1_new));
z = Vnorm(:,ind1);
for ind2 = 1:length(z);
heart(y1_new(ind2),x1_new(ind2))= z(ind2);
end
colormap(jet);
imagesc(flipud(heart));
end