技术文章和新闻稿

在matlab中写作应用程序

Mathworks大卫驻军


一个应用程序是一个独立的matlab®程序,带有GUI,可自动执行任务或计算。完成任务获取数据所需的所有操作,都会在应用程序上执行计算,并在应用程序中执行。

从R2012B开始,您可以将自己的应用程序打包以与其他MATLAB用户共享。您还可以下载由其他人写的应用程序MATLAB中央档案交换或其他来源并在Apps Gallery中安装它们(图1)。

图1. Matlab Apps Gallery使用我的应用程序中安装了自定义应用程序。
图1. MATLAB应用程序库与“我的应用程序”中安装的自定义应用程序。

写作应用程序

因为应用程序有一个用户与之交互的GUI,所以在某些方面写入应用程序的不同之处在于写入其他MATLAB程序。当您编写应用程序时,您正在创建一个事件驱动程序。一旦您的应用程序位于屏幕上,它通常保持空闲状态,直到用户通过与应用程序交互导致事件 - 例如,通过输入文本或单击按钮。回应该行动,一个回调函数被执行。应用程序作者提供的回调函数以响应触发它的事件而执行一些代码。例如,单击a按钮可能执行回调函数,该函数执行一些工程计算并更新GUI中所示的绘图。

在事件驱动的编程中,每个事件回调是一个短暂的功能,必须获取需要执行其工作的数据,根据需要更新应用程序,并存储其结果的结果,其中其他回调可以访问它们。基础应用程序基本上是一系列的小函数,共同完成更大的任务。在编写事件驱动程序时,您面临着编写应用程序中控件的回调的问题,并管理要在这些回调之间共享的信息。

Matlab支金宝app持两种编写应用程序的方法。你可以:

  • 从头开始写代码
  • 使用指南,MATLAB图形用户界面设计环境

大多数用户发现更容易使用指南以图形地布置GUI并为应用程序生成事件驱动的框架。然而,有些人更喜欢从头开始从创作应用程序获得的额外控制。本文介绍了一种使用面向对象的编程从划痕中写入应用程序的方法。我们发现此方法是创建强大用户界面的有效方法。

使用对象:A Stock Titker App示例

一个对象管理相关函数的集合和它们共享的数据。对象对于编写事件驱动的程序特别有用。然而,遗憾的是,许多程序员避免使用对象,因为他们认为它们太复杂或者因为他们找到了学习面向对象的编程艰巨的任务。

别担心。您无需成为面向对象编程的专家,以使用对象构建应用程序。你只需要了解一些基本概念。

创建一个对象时,您需要定义两件事:它的列表特性- 存储在对象中 - 及其内部的数据方法- 在数据的数据上运行的功能。

让我们来看看一款简单的股票代码应用程序,可以更新股票价格的图表随着时间的推移符号(图2)。

图2.简单的股票代码应用程序。
图2.简单的股票代码应用程序。

simplestockticker.MATLAB计划创建实现应用程序的对象。

程序的第一行告诉Matlab您正在定义新类。

classdef simplestockticker句柄

Classdef.关键字定义新类型对象(“类”)。课程的名称,simplestockticker.,必须匹配MATLAB文件的名称。行的最后一部分,<句柄,指示MATLAB不制作此对象的副本。您的所有应用程序都将像这样开始;只有类名(simplestockticker.在我们的例子中)将改变。

属性部分接下来。属性部分由属性......结束句法。您是定义对象使用的数据的位置。

特性

此类使用两组属性。前五个属性将处理器存储到用户界面的可视组件 - 图形,轴,绘制的线路绘制的价格,“符号”标签和编辑框,您可以在其中键入零售符号名称。最后四个属性存储数据,用于获得和绘制股票价格。这些属性可以通过类的任何方法使用。

使用属性有助于解决创作应用程序中的常见问题:在哪里存储需要由应用程序的不同部分共享的数据。传统上,最常见的方法已经使用指导或全局变量存储共享数据,但这些方法有局限性。它可能很难保持指导最新并在应用程序需要时访问该数据。存储为属性的共享数据易于定义和易于从应用程序中的任何位置进行访问。

定义对象的属性后,您可以使用该对象的属性定义其方法方法......结束句法。第一种方法,构造函数,用于创建对象。构造函数的名称始终与类的名称相同。

功能应用程序

请注意,构造函数必须具有一个输出变量。输出变量用于指由构造函数创建的对象。你可以给它你喜欢的名字。我们的示例中的类使用名称应用程序。输出变量很特别,因为它在类定义文件中使用它来引用对象的属性和方法。例如,您将引用对象的numvalues.使用语法的属性app.numvalues.。该类的所有方法都使用此特殊变量定义为他们的第一个参数。

在我们的示例中,构造函数执行三个任务:它创建了用户界面中的所有视觉对象,初始化要绘制的价格,并创建定时器对象,将定期更新以获得最新的股票价格。更新率由此控制app.timerupdaterate.课堂的财产。

此类中的接下来三种方法是回调。以下是Closerequestfcn.数字窗口的回调。当图形关闭时被调用。它看起来像您可能已经写的其他回调函数,其中一个例外:变量应用程序必须在参数列表的开头插入该方法。

功能closeapp.

请注意,类定义文件可以包含其他不是回调的方法 - 例如获得报价方法。此方法由类的其他方法调用。

使用课程的优点

程序员往往促进面向对象编程的优势在传统的功能规划中。他们引用了封装抽取, 和多态性作为使用面向对象方法的原因。虽然这些都是所有有用的概念,但您无需了解它们以将您的应用程序写为Matlab类。使用类创建应用程序的最重要原因是该类提供了管理应用程序不同部分共享的数据的有用方法。对象的属性保存需要在应用程序的方法(回调)中共享所有数据。你不再需要担心使用指导或全局变量,因为现在所有数据都存储在类的属性中。

有关使用类构建的应用程序的更多示例,请参阅了解更多部分。

发布2012年 - 92062V00

查看相关功能的文章