2012-11-22 2 views
0

저는 MATLAB을 처음 사용하고 프로그래밍 경험이별로 없으므로 꽤 고생했습니다.함수와 스크립트를 모두 사용하는 방법

두 기능 (GUI가 있기 때문에)과 스크립트가있는 파일을 만들어야합니다. 콜백에서 스크립트에서 선언 한 변수를 사용해야합니다.

내 프로그램은 전문가 시스템입니다. 먼저 규칙을 구조체 배열로 선언 한 다음 알고리즘을 실행합니다. 필자는 함수 파일 내에서 스크립트 파일에 있어야하는 규칙을 호출하는 방법을 이해하지 못합니다.

업데이트 :
내가 그러나 나는 물건을 많이 읽었습니다 그리고 난 여전히 알아낼 수 없습니다, 그 이해 않습니다. 나는 다음과 같은 규칙을 파일에 가지고 있습니다 :

rule(1).condition1='First condition'; 
rule(1).cond1ask=1; 
rule(1).condition2='Second condition'; 
rule(1).cond2ask=1; 
rule(1).conclusion='Conclusion'; 
rule(1).endmarker=1; 

이 파일에는 ± 50 개의 선언이 포함되어 있습니다. 그런 다음 버튼을 눌렀을 때 알고리즘을 실행해야하는 매우 간단한 GUI가 있습니다. 문제는 다음과 같습니다. GUI 기능과 알고리즘 및 파일을 규칙과 어떻게 결합합니까? GUI 파일에서 규칙을 호출하려면 어떻게해야합니까?

: I 버튼을 누르면 인터페이스 부하가 좋아, 오류 메시지를 얻을 수 있지만

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
global rule
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a1=rule(1).condition(1);
a1

가 그럼 난 내 스크립트 파일에서 GUI 파일을 실행하고, 다음은

은 GUI 코드입니다

부적절한 색인 행렬 참조.

ES_21112012 오류> pushbutton1_Callback (line 83) a1 = rule (1) .condition (1);

gui_mainfcn (줄 96)의 오류 feval (varargin {:});

ES_21112012 (줄 43)의 오류 gui_mainfcn (gui_State, varargin {:}); (hObject, EVENTDATA) ES_21112012 ('pushbutton1_Callback', hObject, EVENTDATA, guidata (hObject))

오류 @ 에서

오류 콜백에게 uicontrol 평가하는 동안

문제가 있다는 것입니다처럼 소리
+0

귀하의 질문은 매우 모호합니다. 귀하의 설명은 너무 추상적입니다. MATLAB에 대한 올바른 소개를 위해 [이 링크] (http://www.mathworks.com/academia/student_center/tutorials/launchpad.html)를 방문하여 문제를 다시 해결하고 구체적인 질문을 던지십시오. 넌 다시 붙어있어. –

+0

나는 많은 것들을 읽었지만 아직도 이것을 이해할 수 없다는 것을 이해한다. 나는 다음과 같은 규칙을 파일에 가지고있다 : 'rule (1) .condition1 = '첫 번째 조건'; 규칙 (1) .cond1ask = 1; 규칙 (1) .condition2 = '두 번째 조건'; 규칙 (1) .cond2ask = 1; 규칙 (1). 결론 = '결론'; 규칙 (1) .endmarker = 1;' 파일에 ± 50 개의 선언이 포함되어 있습니다. 그런 다음 버튼을 눌렀을 때 알고리즘을 실행해야하는 매우 간단한 GUI가 있습니다. 질문 - GUI 기능과 알고리즘 및 파일을 규칙과 어떻게 결합합니까? GUI 파일에서 규칙을 호출하려면 어떻게해야합니까? –

+1

MATLAB에 이미 작성된 것이 있습니까? 질문에 코드의 주요 부분을 게시하면 많은 도움이됩니다. –

답변

0

콜백 함수 내에서 변수 '규칙'에 액세스 할 필요가 없습니다. GUI를 작성할 때 때로는 이렇게하는 것이 까다로울 수 있습니다.

GUI를 사용할 때 변수에 글로벌 액세스를 얻는 가장 일반적인 방법 중 하나는 변수를 처음 정의한 후에 setappdata 함수를 사용하는 것입니다.나는 당신의 프로그램의 설명에 의해 혼동 해요,하지만 당신이 먼저이 '규칙'구조를 정의하는 것이 어디에 있든 당신이 추가 할 수 있습니다 어떻게 든에 전달하지 않고

% rule = struct(); % Define your rule struct first 
setappdata(0, 'myRules', rule); 

그런 다음이 변수를 검색 할 수 있습니다 당신의 전화 getappdata에 의해 인수로 콜백 기능이 유일한 해결책이 아니다 및 프로그램에 대한하지만, 충분히 더 구체적인 조언을 제공하기 어렵다 프로그램의 논리를 이해하지 않고 최선을하지 않을 수

rule = getappdata(0,'myRules'); 

참고.

+0

완벽하게 작동하는 Jerad, 고맙습니다. –

관련 문제