独立matlab exe不起作用

时间:2014-12-04 07:10:07

标签: matlab matlab-compiler

我有一个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。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

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

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