www.pudn.com > 精通Matlab综合辅导与指南-源程序.zip > mmcont2.m


function [cs,h]=mmcont2(arg1,arg2,arg3,arg4,arg5)
%MMCONT2 2-D Contour Plot Using a Colormap.
% MMCONT2(X,Y,Z,N,C) plots N contours of Z in 2-D using the color
% specified in C. C can be a linestyle and color as used in plot,
% e.g., 'r-', or C can be the string name of a colormap. X and Y
% define the axis limits.
% If not given, default argument values are: N = 10, C = 'hot',
% X and Y = row and column indices of Z. Examples:
% MMCONT2(Z)			10 lines with hot colormap
% MMCONT2(Z,20)			20 lines with hot colormap
% MMCONT2(Z,'copper')	10 lines with copper colormap
% MMCONT2(Z,20,'gray')	20 lines with gray colormap
% MMCONT2(X,Y,Z,'jet')	10 lines with jet colormap
% MMCONT2(Z,'c--')		10 dashed lines in cyan
% MMCONT2(X,Y,Z,25,'pink')	25 lines in pink colormap
% 
% CS=MMCONT2(...) returns the contour matrix CS as described in CONTOURC.
% [CS,H]=MMCONT2(...) returns a column vector H of handles to line objects.

% D.C. Hanselman, University of Maine, Orono ME 04469
% 4/17/95
% Copyright (c) 1996 by Prentice Hall, Inc.

n=10;	c='hot';	% default values
nargs=nargin;	cflag=1;	

if nargin<1,error('Not enough input arguments.'),end

for i=2:nargin	% check input arguments for N and C
	argi=eval(sprintf('arg%.0f',i));
	if ~isstr(argi)&length(argi)==1  % must be N, grab it
		n=argi;
		nargs=i;  % # args to pass to contour2
	elseif isstr(argi)  % must be C
		if exist(argi)==2	% is colormap, so grab it
			c=argi;
			nargs=i-1;
		else				% is single color/linestyle
			cflag=0;
			nargs=i;
		end
	end
end
if cflag  % a colormap has been chosen
	clf			% clear figure
	view(2)		% make it 2-D
	hold on		% hold it
	mapstr=sprintf([c '(%.0f)'],n);
	set(gca,'ColorOrder',eval(mapstr));
end
evalstr='[CS,H]=contour(';
for i=1:nargs
	evalstr=[evalstr sprintf('arg%.0f',i) ','];
end
lstr=length(evalstr);
evalstr(lstr:lstr+1)=');';
eval(evalstr)
hold off
if nargout==1,		cs=CS;
elseif nargout==2,	cs=CS;h=H;
end