1.subplot的‘position’属性设置
例如
ax211=subplot(211);
set(ax211,'position',[0.15 0.53 0.75 0.45]);
表示在ax211图形的位置上画图,该位置将当前的图形窗口左下角设置为[0,0],右上角设置为[1,1],因此,[left bottom width height]中四个值都是0和1之间。
- left表示距离图形窗口左边的距离,
- bottom表示距离窗口下边的距离,
- width表示要绘制图形的宽度,
- heigth表示要绘制图形的高度。
上面的例子表示 从当前打开的底图的左边0.15,从下往上0.53的位置开始绘图,要绘制的图形大小是0.75*0.45。特别要注意的是这四个参数不能随意设置,因为一旦定义的前两个参数,就已经确定的要绘制图形的最大范围,后两个参数所定义的图幅范围不应该超过这个最大范围,否则会出现图形显示不全的问题。
2. 多文件操作时,要求文件名有规律
引用网上的例子, 注意字符串的引号,strcat()是链接多个字符串的函数。
for i=1:10
% ***代表文件的格式
filename=strcat('commonName',num2str(i),'.***');
% ****代指对文件的操作
temp=****(filename);
d(i,:)=temp;
end
3.循环处理包含有规律变化的变量名称的语句
在MATLAB中,eval()的功能是可以把字符串当做命令来执行,因此也可以用来批量处理包含有规律变化的变量名称的语句。再简单点举个网上经常用到的例子:
例子1:对多个数组赋初值
for i = 1:3
eval(['HM',num2str(k),'=zeros(2,2);'])
end
相当于 HM1=zeros(2,2);HM2=zeros(2,2);HM3=zeros(2,2);
例子2:将多组数据累加保存在特定的.mat文件中
我们知道当要累加存储数据为.mat文件时,一般用如下命令:
save('FL.mat','Val1','-append'); %将变量Val1保存在FL.mat文件中;
应该注意到上述命令中有 3组引号 的使用,如果将上述命令行改写成eval 则要注意引号的转义字符 为双引号形式:
eval(['save(''FL.mat",''Val',num2str(i),''',''-append'')']);
上述语句的分析 可以拆成如下三个个部分,每个部分都是一个字符串,下面每部分字符串用红色标注,可以看出
eval([ 'save(''FL.mat",''Val' ,num2str(i), ' '',''-append'') ' ]);
第一部分完成 save('FL.mat,'Val %应该注意到3个转义字符的使用
第二部分完成 用变量i转为字符型的数字 % 注意两侧的 逗号 是分割不同部分的字符串用的
第三部分完成 ','-append') %注意到3个转义字符的使用
4.特定分辨率的图像输出
首先要明确在输出图像之前,要对默认的纸张大小,单位以及图像位置做说明,影响比较大的两个参数时PaperPosition和position,最后注意到分辨率设置与纸张大小和应用效果的关系,并非高分辨率显示清晰。
set(gcf,'PaperPositionMode','manual'); %纸张位置模式为手动说明
set(gcf,'PaperUnits','centimeters'); %纸张大小为厘米单位
set(gcf,'PaperPosition',[-14 6 50 16]); %单位 cm,是上面命令设置的,影响整个图形在整个图纸的占比, 注意与前 面的'PaperPositionMode' 有关
set(gcf,'position',[10 10 1900 800]); %该参数的默认单位是像素点,即 整个纸张为1900%800大小,左下起点为 10*10像素
print(gcf,'-r300','-dpng','Figure2.png'); %输出分辨率为300的,图像格式为png,文件名为Figure2.png
5.有关的路径问题
有的matlab工程是好多个文件目录构成的,因此会涉及多个文件目录的操作,例如最简单的是 检查某个文件是不是已经在预设的目录中,即检查文件的完整性,对于大型工程是必要的检查步骤,例如下面的代码:
%% Check the path
% a simple way to check, whether also the subdirectories were added
if ~exist('asu-ch-0309.gfc','file') %检查该文件是否存在,若不存在 则执行下面语句
mfile= mfilename('fullpath'); %返回完全的路径
[pathstr, name, ext] = fileparts(mfile); % 从当前文件的完整路径中提取出路径和文件名
addpath(genpath(pathstr)); %递归添加pathstr所表示目录下面全部文件的目录,并添加到 matlab的环境变量中
end
mfilename()函数将返回运行m文件名,例如上面的例子运行的m文件名为elevation_2d_map.m,那么 mfilename() 返回 elevation_2d_map;
而函数加上参数 'fullpath',则返回该m文件的整个路径,因此完全路径由mfile=D:\rotating_3d_globe\bin_geoid_3d\elevation_2d_map可知。
[pathstr, name, ext] = fileparts(mfile); % 从当前文件的完整路径中提取出路径和文件名
另外fullfile构成地址字符串,例如:
mfile= mfilename('fullpath'); %D:\rotating_3d_globe\bin_geoid_3d\elevation_2d_map
[pathstr, name, ext] = fileparts(mfile); %pathstr=D:\rotating_3d_globe\bin_geoid_3d
fullfile(pathstr, 'New') %D:\rotating_3d_globe\bin_geoid_3d\New
因为是构成地址字符串,所以 要注意 引号的使用,而上面pathstr 已经是字符型所以不必加引号。
另外应用 添加文件后缀名称 使用 fullfile(path,[name '.fig']) [文件名+.fig后缀]
genpath()递归的产生该文件夹下的所有文件的路径, 在添加路径时与addpath() 连用。
6.GUI相关的常用函数
(1)v = get(h)
返回 h
标识的图形对象的所有属性和属性值。v
是一个结构体,其字段名称为属性名称,其值为对应的属性值。h
可以是单个对象或 m
×n
对象数组。
v = get(h,propertyName)
返回特定属性 propertyName
的值。使用时须用单引号将属性名引起来,例如,get(h,'Color')
。
查询特定对象的属性集
使用圆形标记创建一个线图并以 p
形式返回图形线条对象。使用 get
可返回该对象的 LineWidth
、Marker
和 MarkerSize
属性的当前值。
p = plot(1:10,'ro-'); props = {'LineWidth','Marker','MarkerSize'}; get(p,props)
(2)set(H,Name,Value)
为 H
标识的对象指定其 Name
属性的值。使用时须用单引号将属性名引起来,例如,set(H,'Color','red')
。如果 H
是对象的向量,则 set
会为所有对象设置属性。
s = set(H)
返回 H
标识的对象的、可由用户设置的属性及其可能的值,
(3)findobj
返回根对象及其所有子级的句柄。
h = findobj('
返回属性 PropertyName
',PropertyValue,...)PropertyName
设置为值 PropertyValue
的所有图形对象的句柄。
(4)
返回当前图窗的句柄。fig
=gcf
如果图窗不存在,则 gcf
将创建一个图窗并返回其句柄。可以使用图窗句柄查询和修改图窗的属性。
设置当前图窗的背景色并删除工具栏。使用 gcf
命令获取当前的图窗句柄。
surf(peaks) fig = gcf; % current figure handle fig.Color = [0 0.5 0.5]; %设置当前图窗的背景色 fig.ToolBar = 'none'; %删除工具栏
返回当前图窗的当前坐标区或图,这通常是最后创建的图窗或用鼠标点击的最后一个图窗。ax
= gca
图形函数(例如 title
)的目标为当前坐标区或图。
h = gco
返回当前对象的句柄。当前对象是通过键盘交互点击或选择的最后一个对象,如果未在图窗的子对象上执行鼠标点击操作,该图窗会变为当前对象。MATLAB软件将当前对象的句柄存储在图窗的 CurrentObject
属性中。
(5)Axes对象的属性
linewidth 定义X,Y和Z轴的轴线宽度(以点单位定义)
Position由位置向量[left,bottom,width,height]组成,决定坐标轴位置