罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经存档,不会被更新。

MATLAB R2014b图形-第3部分:兼容性考虑新的图形系统中

今天,大卫·加里森我们的客人博客,将继续在R2014b系列新的图形系统。

  • 第1部分:特征的新的图形系统
  • 第2部分:使用图形对象
  • 第3部分:在新的图形系统兼容性的考虑

这是本系列的第3部分。

内容

到目前为止,我们已经学到了什么?

第1部分本系列中,我提供了一个新的MATLAB图形系统概论在R2014b很多新特性的描述。在第2部分,我谈到R2014b——的一大变化MATLAB图形函数返回对象,而不是数字处理。在这篇文章中,我将讨论兼容性考虑使用R2014b图形。

这篇文章比我的两个长以前的帖子。在第一部分中,我将讨论的变化我们在R2014b图形,我们为什么做这些改变,它们是如何影响你,去哪里获得更多信息。第二部分描述了视觉变化的新的图形系统包括一个新的colormap,新款颜色阴谋,和新的情节大小标题和轴标签,这些影响每个人。最后一部分是关于改变我们已经取得了影响高级图形用户和用户界面构建器。你们中的大多数可以跳过最后一节的更先进的材料。

第一节:兼容性考虑R2014b图形

当我们谈论兼容性的考虑我们讨论R2014b变化可能不兼容R2014b之前编写的代码。这些不兼容会影响您的代码在三种方式之一。

  1. 视觉变化如何影响一个阴谋的样子
  2. 这一变化会影响您的代码的行为
  3. 变化,导致一个错误,将需要您修改您的代码

为什么我们让这些变化?

首先,让我说在MathWorks我们非常重视兼容性。我们有一个严格的审查过程潜在的MATLAB的变化,可能会影响现有的MATLAB代码。我们非常彻底地评估他们,确定其影响的程度。我们在发布说明文档这些更改并提供备选方案。这些变化是必要的,让我们继续发展MATLAB。

我们新的图形系统的目标之一是引入一个新的架构,让我们为未来建立新的图形功能。我们不能继续使用旧的图形结构,因为它太限制。新的体系结构也允许我们解决积累了大量优秀的图形的bug。

我们的第二个目标是支持现有的图形功能和尽量减少金宝app中断MATLAB用户。我们通过评估每一个变化,引入一个不相容的图形系统。我们测试了这些变化在MATLAB文件和房子,有超过100000人有大量先进的图形用户确定如下:

  • 通常将一个特定的不兼容性如何影响用户代码?
  • 哪些用户会受到影响吗?
  • 会有多难识别一个特定的不兼容性的影响?
  • 需要多少工作如果代码变更需要做吗?

所有这些测试的结果允许我们做两件事情。首先,它允许在新的图形系统进行更改之前释放某些不兼容的影响降到最低。第二,它告诉我们什么样的文档和工具需要帮助人们过渡。

这些变化如何影响我吗?

任何人使用图形会注意到R2014b视觉差异。人看过R2014b告诉我们新的视觉外观在以前版本的MATLAB是一大进步。差异包括colormaps变化,线的颜色、字体大小、网格、和其他视觉属性。对大多数人来说就是这样。这就是你需要知道的。

你们中那些高级图形编程和构建用户界面可能会影响到不兼容,需要更改代码。我将讨论最常见的这篇文章的最后部分。我们也提供了大量的文档和一些工具来帮助你做出转变。

我如何找到更多关于R2014b图形的变化?

在准备新的图形系统的释放,我们创建了大量的材料,帮助人们了解变化和修改他们的代码。这是一个在R2014b图形信息的资源列表:

第二部分:视觉差异

任何人使用MATLAB图形R2014b会发现情节看起来完全不同。在这一节中,我将向您展示一些很大的视觉差异。我们通过这些例子,我想你会同意更改在R2014b MATLAB版本比之前大有好转。当然,有些时候你可能想改变其中的一些视觉属性。我将告诉你怎么做或我将提供一个链接到文档的更多信息。

新的默认Colormap

在MATLAB中,colormap是一个矩阵的RGB颜色值用于设置图片和表面的颜色。例如,当你调用冲浪函数得到一块表面颜色是情节的高度成正比。颜色是基于colormap的值。

在R2014b,我们引入了一个新的colormap调用parula目前默认值。在早期版本的MATLAB,默认colormap飞机。这里有一个比较的colormaps R2014a和R2014b之间。

我们改变了默认的彩虹colormaps colormap来解决问题飞机。新parulacolormap下令从黑暗到光明,感知制服。与彩虹colormaps有关这个问题的更多信息飞机,看到史蒂夫eddin博客上新Colormap MATLAB -第2部分问题与彩虹。您可以使用colormap函数改变colormap任何你想要的。例如,改变colormap飞机使用以下命令在您创建你的阴谋。

colormap(飞机)

线颜色块

我们还改变了线路颜色用于情节。这些线的颜色选择,让线条更容易区分和帮助人们某些类型的色盲。

线的颜色用于控制的情节ColorOrder财产的对象。另一个注意关于线的颜色在情节。在R2014b,当调用图抓住,MATLAB将使用下一个颜色的颜色为每个调用顺序情节。使情节具有不同线的颜色。在以前的版本中,每次调用情节会在颜色顺序,每一行是一样的颜色。

信息控制颜色的ColorOrder请参见文档部分为什么情节不同的颜色?

图标题和标签

最后一个变化有关的情节。在R2014b,图标题和轴标签使用更大的字体大小比以前版本的MATLAB和情节默认标题是大胆的。

我故意用一种很长的标题在这个情节点。在这种情况下,标题太长它超越了轴的边界。你可以控制你的阴谋标题和轴标签使用TitleFontWeight,TitleFontSizeMultiplier,LabelFontSizeMultiplier属性。更多信息见我如何使图表标题小?

覆盖的主要视觉变化R2014b情节。下一小节将介绍变化只影响高级图形用户和GUI构建器。

你们中的大多数可以停止阅读和享受你的一天。

第三节:影响高级图形用户的变化

如果你还在读书,我假设您做一些高级图形在MATLAB编程或者MATLAB构建用户界面。在这一节中我将涵盖四个最常见的非视觉R2014b图形的变化,你可能会遇到。如果你遇到一个,你可能要修改您的代码。

图形函数返回对象,而不是数字处理

我提到这短暂第2部分本系列的。图形函数返回对象,而不是数字处理。R2014b文档有详细的信息关于这个主题章节图形处理现在的对象,而不是翻倍。我将给一些简单的例子来说明R2014b之前与编写的代码会发生什么。

R2014b之前,您可以存储一组处理图形对象数组中,然后添加一些数值数据数组。在R2014b,这将导致一个错误。

x = -π:0.1:π;日元= sin (x);y2 = cos (x);没有累及=情节(x, y₁, x, y2)%情节两个线对象返回一个数组

如果你想设置没有累及(3)= 1.2,你会获得如下错误。

不能将双值1.2处理

MATLAB不会让你数值添加到图形对象的数组。出现类似的问题如果你想使用一个对象处理在一个MATLAB的函数期望一个数值。这种情况的一个简单的例子sprintf函数。

一个= sprintf (“你点击图% d \ n”gcf);

% d规范的sprintf格式字符串预计一个整数值。然而,由于gcf是a对象,你会获得如下错误。

错误使用sprintf函数没有定义为“matlab.ui。图的输入。

这是最后一个例子。因为图形处理是数字,你可以在逻辑表达式中使用它们。

如果(get (0,“CurrentFigure”)disp ([“图”get (gcf,“名字”)))%显示gcf的图的名字其他的disp (“不开放数据”)%没有打开图结束

这在MATLAB的早期版本中,因为工作get (0, ' CurrentFigure ')将返回一个空数组或数字图处理。这两个值是有效的逻辑测试如果上面的语句。在R2014b,这将导致一个错误。

转换从matlab.ui逻辑。图是不可能的。

我们试图保持兼容以前版本在某些情况下。例如,您仍然可以使用0指图形根等功能得到。作为一项最佳实践,但是,我们现在推荐使用大的函数图形的根。同样,我们还支持使用文字整数值的引用数据金宝app等功能,得到,。再次,最好的做法是使用一个变量包含对象在使用这些函数。

如果你发现自己被卡住了,可以把对象处理数字处理使用函数。你可以把数量返回一个对象处理使用处理函数。我们不建议这是一个长远的解决方案。请注意,我们可以选择删除此功能在未来版本的MATLAB。如果我们这样做,我们会提前让你知道。

彩色的和传说不再轴

在MATLAB的早期版本中,传说colorbar函数创建的对象的类型是“轴”。从技术上讲,传说和彩色的轴的子类。在R2014b,传说函数创建对象和一个传奇colorbar函数创建一个ColorBar对象。

所以这是什么意思?首先,在R2014b findobj调用的结果比以前的版本可能会有所不同。在R2014b,命令

findobj (“类型”,“轴”)

不会返回任何传说或colorbar对象。让这些对象需要做到以下几点:

findobj (“类型”,“传奇”)findobj (“类型”,“ColorBar”)

第二,传说和彩色的不能成为当前轴。R2014b之前,您可以编写这样的代码:

情节(1:10)cb = colorbar;轴(cb)% colorbar当前轴标题(“我的Colorbar”)%设置colorbar的标题

如果你想运行此代码在R2014b您将看到一个错误。

错误使用斧头柄ColorBar不能使电流型轴

在R2014b,您仍然可以使用标题函数。只是给它colorbar处理作为第一个参数。

标题(cb,“我的Colorbar”)

或者您可以使用colorbar标签财产得到标签的文本对象并设置其字符串属性。

cb.Label。字符串=“我的Colorbar”

对象返回的特定的图表已经改变了

图表之类的函数酒吧,轮廓,阀杆和其他一个或多个图形对象返回。MATLAB在以前的版本中,这些对象有名字barseries,contourgroup,stemseries。这些对象都被称为一种特殊类型的对象hggroup。每个这些hggroup对象的一组儿童。孩子们在低级别对象行或补丁。这里有一个例子从R2014a。

[~ h] =轮廓(峰值,“LineLevels”,6:1:8);get (h,“类型”)% hggroup对象轮廓函数返回
ans =
hggroup
ch =得到(h,“孩子”);get (ch (1),“类型”)%的孩子hggroup补丁对象
ans =
补丁

R2014b之前,轮廓命令返回一个有孩子,补丁对象hggroup对象(每个轮廓线)。使用补丁对象,然后可以做一些有趣的事情与轮廓线。你可以,例如,使偶数编号的等高线固体,使奇数编号的轮廓线冲如下所示。

正如你可能已经猜到的,事情在R2014b是不同的。首先,这些函数所返回的对象的类型是不同的。例如,酒吧函数返回一个酒吧对象和轮廓函数返回一个轮廓对象。第二,这些函数所返回的对象不再有孩子。这意味着你不能低级对象。

那么你会怎么做?你需要一个不同的方法。在下面的代码中,我创建了两个轮廓——一个实线和虚线。这段代码将创建一个情节就像上面所示。它在R2014b工作在早期版本的MATLAB。

主要= 6:2:8;小= 5:2:7;[~,hmajor] =轮廓(峰值,“LevelList”、专业);%轮廓与偶数的水平
持有[~,hminor] =轮廓(峰值,“LevelList”、小);%轮廓与奇数的水平集(hminor,“线型”,“:”)%的奇数点水平持有

UI控件可能不会出现在一个GUI

有最后一个改变,我想谈谈。它会影响MATLAB gui R2014b之前创建。假设我有一个简单的GUI面板和一个按钮。我可能的代码是这样的:

图(“NumberTitle”,“关闭”,“名字”版本(“发布”),“位置”(100 100 350 260),菜单条的,“没有”,“工具栏”,“没有”);按钮= uicontrol (“风格”,“按钮”,“字符串”,“我的按钮”,“单位”,“归一化”,“位置”(0.4 - 0.5 0.25 - 0.15));面板= uipanel (“位置”(0.10 - 0.10 0.8 - 0.8),“标题”,“我的UIPanel”);

看起来好对吧?这就是它看起来像在R2014a和R2014b。

这里发生了什么?我看不出我在R2014b按钮。它去了哪里?事实证明,按钮仍然存在但在R2014b根据面板。

在早期版本的MATLAB, uicontrol总是在顶部uipanels不管他们创建的顺序。在R2014b,这两个组件在创建订单。自创建面板按钮后,画上。我真正想要的是面板的按钮是一个孩子。为了做到这一点,我可以改变我的代码是这样的:

图(“NumberTitle”,“关闭”,“名字”版本(“发布”),“位置”(100 100 350 260),菜单条的,“没有”,“工具栏”,“没有”);面板= uipanel (“位置”(0.10 - 0.10 0.8 - 0.8),“标题”,“我的UIPanel”);按钮= uicontrol (“父”面板,“风格”,“按钮”,“字符串”,“我的按钮”,“单位”,“归一化”,“位置”(0.4 - 0.5 0.25 - 0.15));

你也可以解决这个问题在指导通过移动的按钮面板然后搬回去。这将自动使按钮面板的一个孩子。

你可以检查你的现有gui的下载工具过渡到R2014b图形的工具。有关更多信息,请参见为什么一些组件缺失或部分被遮挡?

你现在做什么?

阅读我上面列出的材料来了解更多关于图形的变化R2014b和他们如何影响你的MATLAB代码。下载的工具和运行在你的代码和gui。如果你不能找到你需要的信息解决R2014b变化之一,与我们联系技术支持团队金宝app。他们非常熟悉R2014b的变化,可以帮助你找到一个解决方案。

你遇到任何不兼容吗?

你有没有遇到R2014b这些变化?你可以找到你需要的信息吗?你可以使用此信息来进行必要的更改你的代码吗?你试过过渡工具吗?我们很想听听你的想法在这里

结论

我希望本系列文章给了你一个很好的介绍R2014b图形系统。有很多新东西消化这个版本。尝试这些东西,让我知道你的想法。

感谢罗兰让我接管她的过去几周的空间。




发表与MATLAB®R2014b


  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。