2012-12-17 5 views
0

MatLab &이로드 블록을 치는 것을 배우고 있습니다.MatLab 글로벌 함수 문제

interface.fig 파일은 interface.m이고 내 '기본'GUI 창으로 사용됩니다. 거기에서 다른 파일; bright.m이 호출됩니다.

밝은 파일은 기본 파일의 전역 변수와 함수 호출을 업데이트해야하지만 전역 변수를 계산했지만 함수를 호출 할 수는 없습니다.

시도 다, 같은 일을 바라 보았다 :

reDisplay(); 
evalin('base','reDisplay()'); 
interface.reDisplay(); 
interface>reDisplay(); 

그러나 운이 없었다.

+0

bright.m에서 기능을 호출 할 수없는 이유를 구체적으로 설명해 주실 수 있습니까? 왜 단순히'output = myfunction (myArgs);를 호출 할 수 없습니까? – jerad

답변

0

내부에 함수 이름과 다른 파일 이름을 가진 m- 파일이 정의되어 있으면이 함수를 m- 파일 외부에서 호출 할 방법이 없습니다. bright.m 볼 수 있도록 당신의 reDisplay 기능을 위해서는

, 당신이 M 파일에 reDisplay.m

+0

항상이 경우입니까? 나는 당신이 파일과 다른 이름을 가진 단일 함수를 가지고 있다면 m 파일의 이름과 함수 이름이 아니더라도 여전히 호출 될 것이라는 것을 기억하는 것 같다. – slayton

+0

글쎄 작은 창이 열리는 옵션 상자가있는 창을 가지고 있고 변경하면이 글로벌 함수를 호출하여 변경 사항을 설정해야합니다. – Callum

1

첫 번째 기능이라고 자신의 m-파일에이 기능이해야 할 것은 해당 파일의 외부에서 호출 할 수 있습니다. 함수에 전역 적으로 액세스 할 수있게하려면 독립적 인 파일에 저장해야합니다.

이러한 함수간에 전역으로 액세스 할 수있는 상태가 필요하면 인수로 전달하거나 문제를 해결하기 위해 객체 지향 접근 방식을 사용하는 것이 좋습니다.

+0

첫 번째 함수는 파일 이름과 동일해야합니다. – dinkelk

+0

@ dinkelk on R2012b, 이것이 사실이 아닙니다. m 파일의 첫 x 째 기능은 기능 파일이 호출 될 때 실행되는 기능입니다. 간단한 함수를 만들지 만 파일을 다른 이름으로 저장하십시오. "함수 'XYZ'는 파일 이름 'ABC'로 MATLAB에 알려져 있습니다."라는 경고 메시지가 나타납니다. 또한 ABC – slayton

+0

을 사용하여 XYZ 함수를 호출 할 수 있습니다. 흥미 롭습니다. Linux 용 R2012b에서 방금 시도했지만 설명하는 동작을 얻지 못했습니다. 나는 이것에 대해 더 조사해야 할 것이다. – dinkelk