我有一个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。 任何帮助表示赞赏。
答案 0 :(得分:2)
您无法对编译的Matlab代码有用run()
。因为它是一个动态调用,所以Matlab编译器不会看到你正在调用的函数的依赖关系,所以它不会被选中进行编译。您需要将其更改为函数,并使用显式引用,编译器编译指示或编译器选项来强制它包含在已编译的代码中。然后使用str2func
而不是run
将其称为常规函数。
即使你在编译的exe文件所在的目录中获得了简单的Matlab phtoh0_1.m
文件,编译后的Matlab程序也不会运行它,除非它包含在原始编译中。 Matlab组件运行时将拒绝运行非混淆的Matlab代码。