独立的matlab exe不起作用

Posted

技术标签:

【中文标题】独立的matlab exe不起作用【英文标题】:stand alone matlab exe does not work 【发布时间】:2014-12-04 07:10:07 【问题描述】:

我有一个可以工作的 MATLAB 代码,但是当我将它转换为 exe 时,它​​给了我一个错误,说它找不到我在该代码中运行的 m 文件。这是代码。

clear all
str = sprintf('MyInput.txt');
fp = fopen(str,'r');
N= fscanf(fp,'%d',1)*2;
for i=1:N
    a=sprintf('phtoh0_%d',i);
    b=sprintf('phtoh0_%d.mat',i);
    run(a);
    save(b)
    clearvars -except N fp str
end

错误是找不到 phtoh0_1。 任何帮助表示赞赏。

【问题讨论】:

您确定phtoh0_1 与您的可执行文件在同一个文件夹中吗? 是的,它们在同一个文件夹中。 【参考方案1】:

您不能将run() 用于已编译的 Matlab 代码。因为它是一个动态调用,Matlab 编译器不会看到对您正在调用的函数的依赖,所以它不会被拾取进行编译。您需要将其更改为函数并使用显式引用、编译器编译指示或编译器选项来强制将其包含在编译代码中。然后使用str2func而不是run将其作为常规函数调用。

即使您在编译后的 exe 所在的目录或 cd'ed 目录中获得纯 Matlab phtoh0_1.m 文件,编译后的 Matlab 程序也不会运行它,除非它包含在原始编译中。 Matlab 组件运行时将拒绝运行未混淆的 Matlab 代码。

【讨论】:

如果我将 phtoh_1.m 转换为 EXCEL 文件并尝试使用 xlsread 从不同的目录读取它,那么 MATLAB 代码也可以工作,但 exe 不能,并且在同一个程序中 xlswrite 可以工作。我不明白这个问题。

以上是关于独立的matlab exe不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PlayFunction 在 DLL 中不起作用,但在独立 exe 中起作用 [重复]

Matlab 计时器在独立应用程序中不起作用

为啥以下操作在 Matlab 中不起作用

为啥函数 lsqcurvefit 在 Matlab 2015b 中似乎不起作用?

MATLAB:保存命令不起作用

为啥 matlab 中的源发送邮件(gmail)不起作用?