Mercurial > repos > public > sbplib
view +anim/setup_1d_plot.m @ 126:54055b32d516
Changed evolve so that it always stops as close to tend as possible.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 01 Feb 2016 17:08:19 +0100 |
parents | a4e1608ae980 |
children | 484b48e95c83 |
line wrap: on
line source
% Creates a plot and provides a function to update the data in it. % x - Vector of x-values to plot for. % y_lim - 1x2 vector containing the y limits of the plot. % yfun - Function or a cell array of functions of y data vectors % that should be plotted. The output of each function % will be plotted to the same axis. % % update_data(t,varargin) - Function to update plot data. All varargin will % be passed to functions in yfun. % plot_handles - Array of plot_handles. One for each yfun. % axis_handle - Handle to the axis plotted to. function [update_data, plot_handles, axis_handle] = setup_1d_plot(x,y_lim,yfun) default_arg('yfun',{@(y)y}); if isa(yfun,'function_handle') yfun = {yfun}; end figure_handle = gcf; plot_handles(1) = plot(x,0*x); for i = 2:length(yfun) plot_handles(i) = line(x,0*x); end axis_handle = gca; xlabel('x') ylabel('y') xlim([x(1) x(end)]); if ~isempty(y_lim) ylim(y_lim); end function update(t,varargin) if ishandle(figure_handle) && ishandle(axis_handle) for i = 1:length(yfun) set(plot_handles(i),'YData',yfun{i}(varargin{:})); end title(axis_handle,sprintf('T=%.3f',t)); end end update_data = @update; end