数学建模社区-数学中国
标题: Matlab-默认和factory属性--你们知道吗? [打印本页]
作者: 森之张卫东 时间: 2015-10-11 19:50
标题: Matlab-默认和factory属性--你们知道吗?
默认和factory属性当一个对象被创建时,MATLAB就会把默认的属性值赋值于每一个对象。如果这些属性值不是你想要的,那么你必须用set函数选择你想要的值。
如果你想更改你创建的每一个对象的一个属性,这个过程将变得非常麻烦。由于这个原因,MATLAB允许你修改默认值本身,所以当他们被创建时,所有的对象都会继承所有正确的属性值。
当一个图形对象被创建时,MATLAB就会通过检测对象的父对象来寻找每一个属性的默认值。如果父对象设置了默认值,那么这个值就会被应用。如果没有设置默认值,那么MATLAB就会检测父对象的父对象,看是否有默认值。以此类推,直到根对象。在这个过程中,MATLAB会应用第一次遇到的默认值。
默认属性可以在优先级高的图形对象中的任意一点设置。
例如,默认的图的颜色在根对象中设置,而在这之后的所有图象都有一个新的默认颜色。从另一方面说,默认的坐标轴颜色可以在根对象或图象对象设置。如果坐标的默认颜色在根目录中设置,那么它将应用于所有图象的所有新坐标轴,如果默认的坐标轴颜色在图象对象中设置,它将在当前图象窗中的新坐标轴。
默认值的设置要用一个字符串,这个字符串由"Default",对象类型和属性名组成。所以默认图象颜色可以通过属性"DefaultFigureColor"来设置,默认的坐标轴颜色可以通过属性"DefaultAxesColor"设置。下面是设置默认值的一些例子
set(0, 'DefaultFigureColor', 'y') 黄色图象背景
set(0, 'DefaultAxesColor', 'r') 红色坐标系背景——所有图象中的坐标轴
set(gcf, 'DefaultAxesColor', 'r') 红色坐标系背景——当前图象坐标轴
set(gca, 'DefaultLineStyle', ':') 只在当前坐标系中设置默认线型为虚线
如果你要对已存在的对象的属性进行修改,那么在用完这个属性之后,最好恢复原来的条件。
如果你在一个函数中修改了一个对象的默认属性值,保存它原来的值,并在跳出这个函数之前恢复它们。
例如,假如我们用归一化单位创建一系列的图象,我们可以用下面的保存和修复原来的单位。
saveunits = get(0, 'DefaultFigureUnits');
set(0, 'DefaultFigureUnits', 'normalized');
...
<MATLAB statements>
...
set(0, 'DefaultFigureUnits', saveunits);
如果你想要定制MATLAB,每一次都有不同的默认值,那么每次当MATLAB启动时你必须对根对象设置默认值。
最简单的方法是把默认值存入startup.m文件,每次MATLAB启动时都会自动执行。
例如,假设你经常使用A4纸,并在图象中经常加入网格线。那么你可以把下面的语句加入到startup.m文件中。
set(0, 'DefaultFigurePaperType', 'a4letter');
set(0, 'DefaultAxesXGrid', 'on');
set(0, 'DefaultAxesYGrid', 'on');
set(0, 'DefaultAxesZGrid', 'on');
有三种特殊值字符串用于句柄图形:"remove","factory"和"default"。如果你已经为一个属性设置了默认值,那么"remove"值将会删除你所设置的默认值。
例如,假设你设置默认的图象颜色为黄色。
set(0, 'DefaultFigureColor', 'y');
调用下面的函数将会取消当前的默认值并恢复先前的默认值。
set(0, 'DefaultFigureColor', 'remove');
字符串"factory"允许临时跳过当前的默认值,并使用原来的MATLAB的默认值。
例如,尽管当前的默认颜色为黄色,下面的语句将会用factory创建下面的图象。
set(0, 'DefaultFigureColor', 'y');
figure('Color', 'factory');
第三个特殊的属性值字符串是default,这个属性值迫使MATLAB搜索对象层次结构,直到查到所需属性的一个默认值。如果找到,它就使用该默认值。如果查到根对象,没有找到用户定义的默认值,MATLAB就使用factory默认值。
它的应用说明如下
% Set default values
set(0, 'DefaultLineColor', 'k'); % root default = black
set(gcf, 'DefaultLineColor', 'g'); % figure default = green
% Create a line on thecurrent axes. This line is green.
Hndl = plot(randn(1, 10));
set(Hndl, 'Color', 'default');
pause(2);
% Now clear the figuredefault and set the line color to the new
% default. The line is nowblack.
set(gcf, 'DefaultLineColor', 'remove');
set(Hndl, 'Color', 'default');
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |