2012-03-22 3 views
0

"config.m"이라는 파일을로드하는 "master.m"이라고하는 matlab 스크립트가 있습니다. config.m에는 master.m에서 사용 된 모든 변수가 포함되어 있으므로 코드를 편집하지 않고도 쉽게 변경할 수 있습니다. 문제는, 사용자 입력에 따라 config.m을로드하기 위해 master.m의 main 함수를 얻으려고하는 것입니다. 그래서 기본적으로 사용자는로드 할 파일의 이름을 지정할 수 있어야합니다. 예를 들어 config.m이 testing.m이라면 사용자는 matlab 프롬프트에서 다음을 입력 할 수 있습니다.Matlab 스크립트를 함수로 실행하려고 시도했습니다.

>> master(testing.m) 

그러면 파일이로드됩니다. 그러나이 작업을 올바르게 수행하는 방법을 알 수 없기 때문에 eval 기능을 살펴 보았지만 오류가 발생합니다.

function [X,Y] = master(file) 
eval(file) 
그러나

내가 MATLAB 프롬프트에서 실행 : 여기 master.m 지금 현재로 가지고있는 코드입니다

>> master(config.m) 
??? Attempt to execute SCRIPT config as a function: 
/home/myusername/config.m 

나는 또한 master('config.m')을 시도, master('./config.m'), master(config)master(config.m)는하지만, 아무 소용이

어떤 아이디어?

답변

4

나는 당신이 원하는 것은 생각 :

master('config'); 
+0

이 와우 너무 간단했다 : 콘솔에서

a = 2; disp('Testing config.m'); 

! MATLAB 문법에 빨려,하지만이 일했다! –

3

당신은 거의 그것을했다! 파일 이름을 작은 따옴표로 묶고 .m을 삭제하면 트릭을 수행해야합니다. 다음은 Matlab R2011b (Linux)에서 동일한 폴더에 master.m 및 config.m 파일이있는 경우 작동합니다.

master.m :

function X = master(filename) 
eval(filename); 
X = a^2; 
end 

config.m :

>> master('config') 
Testing config.m 
ans = 
    4 
관련 문제