matlab常用的绘图属性设置 与 文件操作

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 可返回该对象的 LineWidthMarker 和 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]组成,决定坐标轴位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值