2015-04-09 3 views
0

У меня есть матрица, представляющая высоту квадратной сетки 10x10 с течением времени. Высота обновляется в цикле for по строкам и столбцам. Моя попытка состояла в том, чтобы просто поместить серфинг (высоту) в этот цикл, с паузой в 0,1 секунды между графиками, потому что так я сделал это с двухмерным сюжетом. Как я могу сделать эту работу?Анимация поверхности в Matlab

ответ

2

Я думаю, что лучший способ - обновить данные непосредственно с вашего участка.

Для этого, назначить ему ручки во время его создания, а затем обновить ZData свойства, используя, например,

set(hSurf,'ZData',SomeValues) 

Пример кода (например, с именем hSurf.):

clear 
clc 
close all 

figure(1) 

%// Generate data 
Z = peaks(25); 

%// Create handles to access/modify data. 
hSurf = surf(Z); 

k = 0; 

%// Set up name to create animated gif. 
filename = 'AnimateSurf.gif'; 

%// Just a loop 
while k < 10 

    %// IMPORTANT part. Update the Z data 
    set(hSurf,'ZData',k*Z); 

    %// Set limits so the graph looks nice. 
    zlim([-80 80]) 
    drawnow 

    %// Capture frame to write to gif. 
    frame = getframe(1); 
    im = frame2im(frame); 
    [imind,cm] = rgb2ind(im,256); 
    if k == 0; 
     imwrite(imind,cm,filename,'gif', 'Loopcount',inf); 
    else 
     imwrite(imind,cm,filename,'gif','WriteMode','append'); 
    end 

    pause(.15) 

    k = k+1; 
end 

И выход:

+1

Молодцы , и хорошая картина! :-) –

+1

@julesjanker, так мой ответ вам помог? –

+0

@julesjanker: [Accept] (http://stackoverflow.com/help/accepted-answer) ответ, если он работает для вас. –

Смежные вопросы