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
참고 항목
카테고리
				Help Center 및 File Exchange에서 Animation에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




