matlab gui转exe 要装matlab吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab gui转exe 要装matlab吗相关的知识,希望对你有一定的参考价值。

参考技术A 将matlab写的gui转exe,需要装matlab,还需要matlab里的组件mcc(MATLAB Compiler Components);
如果目标电脑需要运行这个mcc编写的exe,那么它就需要安装matlab提供的一个运行库MCRInstaller.exe(这个不用上网找,matlab安装目录下面就有,和mcc一起安装的,问题是它不会自动安装),否则转成exe的程序可能不能用。

你能解释一下这个嵌入式 MATLAB 函数错误吗?

【中文标题】你能解释一下这个嵌入式 MATLAB 函数错误吗?【英文标题】:Can you explain this Embedded MATLAB Function error? 【发布时间】:2009-08-11 08:08:59 【问题描述】:

我在将值从 GUI 发送到 Simulink 模型中的嵌入式 MATLAB 函数 (EMF) 时遇到问题。我从 GUI 中的滑块获取此值并将其发送到模型中的 EMF 块。我可以确认该值已从我的 GUI 正确传输到我的 Simulink 模块,因为我可以在模型中使用显示模块显示该值,并在我更改 GUI 中的滑块位置时看到值的变化。但是,当我运行我的模型时,我不断收到此错误:

Could not determine the size of this expression.

Function 'Kastl' (#18.282.283), line 14, column 1:
"f"

这是我的 EMF 块代码的一部分:

function y = input_par(u,fstart)
  ...
  f_end = 1000;
  f = fstart:f_end; 
  ...

【问题讨论】:

【参考方案1】:

我相信MikeT 是正确的:您不能在嵌入式函数中重新定义变量的大小。如果您查看 Defining Local Variables 小节下的 Embedded MATLAB Function documentation page,它会说:

一旦你定义了一个变量,你就不能 将其重新定义为任何其他类型或大小 在函数体中。

您将不得不重新设计您的嵌入式函数,以便您声明的变量不会改变大小。由于我不知道您随后对变量 f 做了什么,因此我无法为您提供更多具体的帮助。

一般来说,如果您绝对需要使用改变大小的数据,一种解决方案是用“垃圾”值填充数据以保持恒定大小。例如:

MAX_ELEMS = 1000;  % Define the maximum number of elements in the vector
f = [fstart:MAX_ELEMS nan(1,fstart-1)];  % Create vector and pad with NaNs

在上面的例子中,变量f总是有1000个元素(假设fstart的值是一个小于或等于1000的整数值)。值NaN 用于将向量填充到适当的常量大小。任何后续代码都必须能够识别应该忽略 NaN 的值。根据嵌入式函数随后进行的计算,可能需要不同的填充值来代替NaN(例如0、负值等)。

【讨论】:

我不是用 EMF 而是用 2 级 M 文件 S-Function 解决了这个问题。对于输入,fe fstart 我使用了我从 GUI 设置的常量和增益块。然后我将此值用于我的 2 级 M 文件 S-Function。它有效。【参考方案2】:

我相信您遇到的问题是您无法在仿真期间更改参数,这会导致信号的维度发生变化。在您的示例中,代码

f = fstart:f_end;

每当 fstart 改变时改变大小。我认为这就是 EMF 块所抱怨的。对于这个特定问题,我没有任何简单的解决方法,但也许有一种等效的方法可以避免这个问题。

【讨论】:

以上是关于matlab gui转exe 要装matlab吗的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在没有 mcr 的情况下在 matlab 中为 .m 文件创建 .exe 文件?

matlab回调函数生成.exe文件好处

MATLAB GUI有什么用

使用 MATLAB 试用版将 MATLAB GUI 转换为 .exe

在 Matlab 独立 GUI.exe 中包含多个文件夹(包含图像、脚本等)

怎么修改用matlab编译GUI程序生成的exe文件的图标