How to update a 3D surface plot?
Mostra commenti meno recenti
I have a 3D cascade plot. It has Amplitude Vs Frequency data on X and Y axis. It has amplitude on Z axis. I want to create an animation where the evolution of data on X Y axis is updated slowly in the Z direction as the time progresses.
2 Commenti
Walter Roberson
il 13 Giu 2016
Which plot call did you use to create the 3D cascade plot?
Anuj Rekhy
il 13 Giu 2016
Risposte (2)
Star Strider
il 13 Giu 2016
See if modifying this code snippet with your surf call and data does what you want:
[X,Y] = meshgrid(linspace(-5, 5, 50)); % Create Mesh Data
fcn = @(x,y,k) k*x.^2 + y.^2; % Function To Plot (Vary Sign Of ‘x’)
v = [1:-0.05:-1; -1:0.05:1]; % Multiplier For ‘x’
for k1 = 1:2 % One Cycle For ‘Up’, One FOr ‘Down’
for k2 = v(k1,:) % Select A Direction From ‘v’
surfc(X, Y, fcn(X,Y,k2)) % Draw Surface
axis([-5 5 -5 5 -30 50]) % Set ‘axis’ For All Plots
drawnow % Draw Plot
pause(0.1) % Create Evenly-Timed Steps For Animation
end
end
You will have to experiment with it to get the result you want.
KSSV
il 13 Giu 2016
h.fig = figure ;
h.ax = handle(axes) ; %// create an empty axes that fills the figure
h.surf = handle( surf( NaN(2) ) ) ; %// create an empty "surface" object
%Display the initial surface
set( h.surf , 'XData',X , 'YData',Y , 'ZData',Z )
for i = 1:n
% update surface, load the data
h.surf.ZData = Z ;
end
4 Commenti
Anuj Rekhy
il 13 Giu 2016
Modificato: Walter Roberson
il 13 Giu 2016
KSSV
il 13 Giu 2016
I guess X, Y remain same for the whole animation...you need to update only Z...so the above lines only updates Z.
Anuj Rekhy
il 13 Giu 2016
Modificato: Anuj Rekhy
il 13 Giu 2016
Walter Roberson
il 13 Giu 2016
for i = 1:n
Z = ... new data
set(h, 'ZData', Z);
drawnow()
end
Categorie
Scopri di più su Animation in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
