单机版matlab exe不工作

单机版matlab exe不工作,matlab,matlab-compiler,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) c

我有一个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。 非常感谢您的帮助。

您不能将
run()
与编译后的Matlab代码一起使用。因为这是一个动态调用,Matlab编译器将看不到对所调用函数的依赖关系,因此不会选择它进行编译。您需要将其更改为函数,并使用显式引用、编译器pragmas或编译器选项强制将其包含在编译代码中。然后使用
str2func
而不是
run
将其作为常规函数调用


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

您确定
phtoh0_1
与可执行文件位于同一文件夹中吗?是的,它们位于同一文件夹中。如果我将phtoh_1.m转换为EXCEL文件,并尝试使用xlsread从不同的目录中读取它,然后MATLAB代码也可以工作,但exe不能和xlswrite在同一程序中工作。我不明白这个问题。