2014-12-04 7 views
0

작동하는 MATLAB 코드가 있지만 exe 파일로 변환 할 때 해당 코드 내에서 실행중인 m 파일을 찾을 수 없다는 오류가 발생합니다. 여기에 코드가 있습니다.독립 실행 형 matlab exe가 작동하지 않습니다

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

'phtoh0_1'은 (는) 실행 파일과 같은 폴더에 있습니까? – Hoki

+0

예, 같은 폴더에 있습니다. – shweta

답변

2

컴파일 된 Matlab 코드와 함께 run()을 유용하게 사용할 수 없습니다. 동적 호출이기 때문에 Matlab 컴파일러는 호출하는 함수에 대한 종속성을 볼 수 없으므로 컴파일을 위해 선택되지 않습니다. 함수로 변경하고 명시 적 참조, 컴파일러 pragma 또는 컴파일러 옵션을 사용하여 컴파일 된 코드에 강제로 포함시켜야합니다. 그런 다음 run 대신 str2func을 사용하여 정규 함수로 호출하십시오.

평범한 Matlab phtoh0_1.m 파일을 컴파일 된 exe가있는 디렉토리 또는 cdeded 디렉토리로 가져 오더라도 컴파일 된 Matlab 프로그램은 원본 컴파일에 포함되어 있지 않으면 실행하지 않습니다. Matlab Component Runtime은 모호하지 않은 Matlab 코드 실행을 거부합니다.

+0

phtoh_1.m을 EXCEL 파일로 변환하고 xlsread를 사용하여 다른 디렉토리에서 읽으려고하면 MATLAB 코드도 작동하지만 exe는 그렇지 않으며 같은 프로그램 xlswrite에서 작동합니다. 나는 그 문제를 이해하지 못한다. – shweta