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
Другие вопросы по тегам