How to update a 3D surface plot?
    19 次查看(过去 30 天)
  
       显示 更早的评论
    
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 个评论
回答(2 个)
  Star Strider
      
      
 2016-6-13
        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.
0 个评论
  KSSV
      
      
 2016-6-13
        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
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




