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 试用版将 MATLAB GUI 转换为 .exe