disp([ ‘Unknown Property Name: ‘ Name’]) end end end end 精通MATLAB工具箱中的函数mmpaper以简单的方式阐述了对纸张属性的使用。如下所示,函数mmpaper设置当前图形的纸张属性,并将所有以后的图形设成缺省值。函数mmpage在下一章讨论,它是一个mmpaper友函数。mmpage建立一个图形用户界面,设定图形在打印页上的位置。
function mmpaper(arg1,arg2,arg3,arg4,arg5,arg6) %MMPAPER Set Default Paper Properties. % MMPAPER Name value...
% sets default paper properties for the current figure and succeeding figures based on Name % value pairs. % Properties: % NAME VALUE {default} % Units [{inches},centimeters,points,normal] % orient [{portrait},landscape] % type [{usletter},uslegal,a3,a4letter,a5,b4,tabloid] %
% Examples:
% MMPAPER Units inch orient landscape % MMPAPER type tabloid %
% MMPAPER with no arguments returns the current paper defaults. % Copyright (c) 1996 by Prentice-Hall,Inc.
Hf=mmgcf; flag=0;
if isempty(Hf) flag=1; Hf=figure( ‘Visible’ , ‘off ‘ ); end if nargin for i=1:2:max(nargin-1,1) Name=eval(sprintf( ‘arg%.0f ‘ ,i)0,[]); % get Name argument value=eval(sprintf( ‘arg%.0f ‘ ,i+1)0,[]); % get Name argument if Name(1)== ‘o’
set(0, ‘DefaultFigurePaperOrientation’ ,value) set(Hf, ‘PaperOrientation’ ,value) elseif Name(1)== ‘t’ set(0, ‘DefaultFigurePaperType’ ,value) set(Hf, ‘PaperType’ ,value) elseif Name(1)== ‘u’ set(0, ‘DefaultFigurePaperUnits’ ,value) set(Hf, ‘PaperUnits’ ,value) else disp([ ‘Unknown Property Name:’ Name]) ens end end 当把对象放在一个特定的位置时,有时在象素和归一化坐标之间进行转化是很有用的。在精通MATLAB工具箱中有两个函数进行这种转换。第一个是mmpx2n,它将象素转化为归一化坐标;第二个是mmn2px,它进行相反的转换。这些函数演示了如何以所需的一组单位获取 ‘Position’ 属性值。首先,把对象的当前 ‘Units’ 属性保存起来;然后,将 ‘Units’ 属性设成所需的值并获取所需的 ‘Position’ 属性值;最后,将 ‘Units’ 的值恢复为初始值。mmpx2n的M文件描述如下:
function Y=mmpx2n(X,Hf)
%MMPX2N Pixel to Normalized Coordinate Transformation.
% MMPX2N(X) converts the Position vector X from pixel coordinates to normalized % coordinates w.r.t.the computer screen. %
% MMPX2N converts the Position vector X from pixel coordinate to narmalized coordinates % w.r.t.the figure windoiw having handle H. %
% X=[left bottom width height] or X=[width height] % Copyright (c) 1996 by Prentice-Hall,Inc. msg= ‘Input is not a pixel Position vector.’ ; lx=length(X);
sz= ‘Position’ ;
if nargin==1,Hf=0;sz= ‘ScreenSize’ ;end if any(X<1)| (lx~=4&lx~=2) error(msg)
end if lx==2,X=[1 1 X(:)’ ];end % [width height] input format u=get(Hf, ‘Units’ ); % get Units set (Hf, ‘Units’ , ‘pixels’ ); % set Units to pixels s=get(Hf,sz); Y=(X-1)./([s(3:4)]-1); % convert set(Hf, ‘Units’ ,u); % reset Units if any(Y>1) error(msg) end if lx==2,Y=Y(3:4);end % [width height] output format 精通MATLAB工具箱中的两个函数mmcont2和mmcont3都用用户指定的颜色映象画等值线图。每一个函数分析输入参量并建立一个字符串,它包含了颜色的说明。一旦设置了字符串,就设置了当前坐标轴的 ‘ColorOrder’ 属性;最后,它们分别调用具有合适的参量的函数contour和contour3来画出图形。函数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-’ ,orC 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.
% 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
这里要讨论的最后一个精通MATLAB工具箱函数是mmtile。就象在二维函数那一章里所描述的一样,该函数在计算机屏幕上将4个已存在的图形按平铺模式排列起来。函数mmtile.m的内容如下所示:
function h=mmtile(n)