⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jcontour.m

📁 JLAB is a set of Matlab functions I have written or co-written over the past fifteen years for the p
💻 M
字号:
function [hcont,hcont2,hlab]=jcontour(x,y,z,arg4,arg5,arg6,arg7,arg8)%JCONTOUR  Contouring with labelled and unlabelled contours.%%   JCONTOUR draws nonlabelled contours of one style and labelled%   contours with a second style.%%   JCONTOUR(X,Y,Z,V1,V2,STY1,STY2), where V1 and V2 are vectors,%   draws nonlabelled contours with style STY1 at levels specified%   in V1, and labelled contours with STY2 at the V2 levels. %%   If V1 and V2 are scalars, they specify the contour interval for%   the nonlabelled and labelled contours, respectively.%%   X and Y may both be vectors, or both matrices, or one of each.%%   The SYTLE strings follow the format specified in LINESTYLE.  Thus%   STY1='2b--' draws blue dotted lines of width 2.%%   JCONTOUR(X,Y,Z,V1,V2,STY1) uses SYT1 for all contours.%  %   JCONTOUR(X,Y,Z,V1,V2) and JCONTOUR(X,Y,Z,V), like CONTOUR, uses %   Z values and the current color map to determine line colors.%  %   JCONTOUR(X,Y,Z,V,STY) draws contours with style STY at levels %   in V (or with an increment V if V is a scalar), with no labelling.%%   JCONTOUR(..., 'nolabels') supresses labelling of contours, and may%   be used to draw unlabelled contours in two different styles.%%   [H1,H2,HLAB]=JCONTOUR(X,Y,Z,V1,V2,STY1,STY2) outputs vector %   handles to the labelled and nonlabelled contours (H1 and H2%   respectively) as well as to the label text (HLAB).	%	%   Example:  [x,y,z]=peaks; jcontour(x,y,z,1,3,'D2--','2k');%%   Usage:  jcontour(x,y,x,v,sty);%           jcontour(x,y,x,v1,v2,sty);%           jcontour(x,y,x,v1,v2,sty1,sty2);%           [h,h1,hlab]=jcontour(x,y,x,v1,v2,sty1,sty2);%   _________________________________________________________________%   This is part of JLAB --- type 'help jlab' for more information%   (C) 2004--2006 J.M. Lilly --- type 'help jlab_license' for details        na=nargin;bstyin=0;bsty2in=0;bv1in=0;bv2in=0;hcont=[];hcont2=[];hlab=[];%if there are more than three input arguments, look for %style strings corresponding to the labeled and labelless contoursntharg=eval(['arg',int2str(na)]);blabel=1;if strcmp(ntharg,'nolabels')  blabel=0;  na=na-1;endif na>3	for i=4:na		itharg=eval(['arg',int2str(i)]);		if ischar(itharg)			if bstyin==0				sty=itharg;				bstyin=1;			elseif bstyin==1				sty2=itharg;				bsty2in=1;			end			if na>i				argadvance(nargin,i+1);			end		end	endendna=na-bstyin-bsty2in;if na>=4	minz=min(min(z));	maxz=max(max(z));	v=arg4;	if length(v)==1;		v=[floor(minz/v)*v:v:ceil(maxz/v)*v];	endendif na==5	v2=arg5;	if length(v2)==1		v2=[floor(minz/v2)*v2:v2:ceil(maxz/v2)*v2];	end	bv2in=1;	if bsty2in		index=ones(size(v));		for j=1:length(v)			if any(v(j)==v2)				index(j)=0;			end		end		v=v(find(index));	endendwashold=0;if ishold	ax=axis;	washold=1;endif length(x)~=length(y)	if size(z,2)~=length(x)		z=conj(z');	endelse 	disp('Make sure Z is oriented correctly')endif ~(min(size(x))==1 && min(size(y))==1)	if min(size(x))==1		x=ones(length(y),1)*conj(x(:))';	elseif min(size(y))==1		y=row2col(y)*ones(1,length(x));	endendif na<=3	if bstyin		[c,hcont]=contour('v6',x,y,z,'k');		linestyle(hcont,sty);	else		[c,hcont]=contour('v6',x,y,z,'k');	endelse	if bsty2in		if bstyin				if ~isempty(v)			   [c,hcont]=contour('v6',x,y,z,v,'k');			   linestyle(hcont,sty);			end		else			if ~isempty(v)		            [c,hcont]=contour('v6',x,y,z,v);			end		end		hold on		if ~isempty(v2)		   [c,hcont2]=contour('v6',x,y,z,v2,'k');		   linestyle(hcont2,sty2);		end		if washold, axis(ax),end		if ~isempty(v2) && blabel		   hlab=clabel(c,hcont2,v2);		end	else		if bstyin				if ~isempty(v)			   [c,hcont]=contour('v6',x,y,z,v,'k'); 			   linestyle(hcont,sty);			end		else			if ~isempty(v)			   [c,hcont]=contour('v6',x,y,z,v);			end		end		hold on		if bv2in			if bstyin					if ~isempty(v2)				   [c,hcont2]=contour('v6',x,y,z,v2,'k'); 				   linestyle(hcont2,sty);				end			else				if ~isempty(v2)				   [c,hcont2]=contour('v6',x,y,z,v2);				end			end			if ~isempty(v2) && blabel			   hlab=clabel(c,hcont2,v2);			end		end		if washold, axis(ax), end	endendset(gca,'box','on')function[evalme]=argadvance(na,n)if nargin==1	n=2;endevalme=[];for j=n:na	evalme=[evalme 'arg',int2str(j-1),'=arg',int2str(j),';'];end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -