如何通过一个类MATLAB可执行

5次浏览(最近30天)
Deepa Maheshvare"类=
Deepa Maheshvare 2021年8月20日
这是我之前的后续工作 在这里
我有以下脚本
主要。m > >
函数m = magicsquare
n = setting.n;
如果ischar (n)
n = str2double (n);
结束
m =魔法(n);
disp (m)
以及上面的脚本从其中读取变量n的类。
classdef设置
%设置本课程的摘要在这里
这里有详细的解释
属性(常量)
n = 5;
结束
%的方法
%函数obj =设置(inputArg1,inputArg2)
% %SETTING构造该类的实例
详细说明如下
% obj。Property1 = inputArg1 + inputArg2;
%结束
% function outputArg = method1(obj,inputArg)
% %方法1此方法概述如下
详细说明如下
% outputArg = obj。Property1 + inputArg;
%结束
%结束
结束
我已经转换了主线。米into a executable using the Application compiler. Since I want the user to specify input in `setting` class, this class was not converted into a binary during compilation (i.e. I have excluded the setting.m file from `Files required for your application to run` tab in the Application compiler.)
下面是我尝试的:我简单地保存了main.exe和设置。在同一个文件夹中运行!main。
我得到以下错误
不能解析名称设置。
错误在主线(第2行)
MATLAB: undefinedVarOrClass
我可以将' n '作为输入参数传递给可执行文件,就像我在之前的文章中提到的那样,因为' n '是在设置类中定义的单个属性。然而,对于我的实际系统,在设置中定义了更多的属性,我希望用户在一个类文件中定义所有的属性,其他函数可以从这个类文件中访问定义的属性值。我不确定如何传递一个类到' main '可执行文件。建议会很有帮助。

答案(1)

沃尔特·罗伯森"类=
沃尔特·罗伯森 2021年8月20日
你不能那样做。
任何在编译时没有完全定义的.m或.p文件(脚本、函数、类定义),都必须在可执行文件的运行时进行解释。然而,编译后的可执行文件无法解释MATLAB。
如果您希望用户能够在文件中提供设置,那么您将需要让他们以数据文件的形式进行设置,您的程序将通过分析数据文件来设置变量。
8的评论
沃尔特·罗伯森"类=
沃尔特·罗伯森 2021年8月23日
temp = data.q;
q =字段名(q);
你什么都不用做 临时 然后在下一行,你使用了undefined变量
你的代码是 假设 ini文件返回属性 但你不应该这么认为。您应该验证每个必要的属性(对于任何可选属性,您应该在用户要求它们时检查它们是否存在)。
classdef设置
类名称是 设置
方法(静态)
函数data = load_setting
方法名 不同的 设置 ,所以这个方法是 类的构造函数。
函数n = get_n
n =数据。m + 2;
结束
数据 不是类的属性,也不是类或包的名称。 数据 在这个背景下可能没有定义。
函数data = load_setting
文件=“Configuration.ini”
我= INI (“文件”、文件);
I.read ();
数据= I.get (“用户数据”);%结构
结束
这是一个静态类 设置 不是句柄类,所以呢 load_setting 将返回值给调用它的函数。你永远不会调用函数并将结果存储在任何地方,所以 数据 局部变量有断开连接的用法 数据 在你的两个get_*函数中。
属性(常数)
n = setting.get_n;
q = setting.get_q;
结束
你在定义常量,看起来你想要调用类的方法来做这件事。那么,这些方法到底什么时候被调用呢?
MATLAB在加载类时计算表达式。
你的get_n和get_q期望 数据 已经被构造,这意味着他们期望 load_setting 已经被召唤了。但是load_setting不会被自动调用,因为它只是一个普通的方法。
如果load_setting的内容是构造函数方法,那么就会出现构造函数方法在 实例 ,而不是在装入类时创建。目前,我还没有发现在装入类时触发的任何特殊方法,但我在这方面完全没有经验。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!