GUI로 작업하고 있습니다. 핸들 구조에서 생성 된 추가 필드에 데이터를 저장하려고합니다. 그러나 콜백 함수가 끝날 때 핸들 구조를 올바르게 업데이트하는 방법을 모르겠습니다. 제발, 조언을 해줘. 신호Matlab GUI : 핸들 구조를 업데이트하는 방법?
내 간략화 프로그램
- 집합 번호 (1-10). 각 신호에는 3 개의 매개 변수가 있습니다.
- 핸들 구조에서 생성 된 배열에서 선택된 신호에 대한 읽기 매개 변수 (기본값은 0 임).
- 매개 변수를 편집하고 배열을 업데이트하십시오.
GUI
function simple_gui(hObject, h)
h.fig = figure(...
'Units','pix',...
'Position',[50 50 500 400],...
'Visible','default',...
'Name','GUI',...
'NumberTitle','off',...
'Resize','on');
table = {'1' , '2', '3' , '4', '5', '6', '7', '8', '9', '10' };
h.number = uicontrol(...
'Units','characters',...
'Max',10,...
'Min',1,...
'String',table,...
'Style','popupmenu',...
'Value',1,...
'Position',[37.4 28.3846153846154 19.4 1.61538461538462],...
'BackgroundColor',[1 1 1]);
h.edit1 = uicontrol(...
'Units','pix',...
'String','0',...
'Style','edit',...
'Position',[180 280 50 20],...
'BackgroundColor',[1 1 1],...
'FontSize',10);
h.edit2 = uicontrol(...
'Units','pix',...
'String','0',...
'Style','edit',...
'Position',[180 255 50 20],...
'Children',[],...
'FontSize',10);
h.edit3 = uicontrol(...
'Units','pix',...
'String','0',...
'Style','edit',...
'Position',[180 230 50 20],...
'FontSize',10);
홈페이지 코드 :
요약h.parameter1 = zeros(1,10);
h.parameter2 = zeros(1,10);
h.parameter3 = zeros(1,10);
h.signal_no = 0;
h.number.Callback = {@number_Callback, h};
h.edit1.Callback = {@parameter_change_Callback, h};
h.edit2.Callback = {@parameter_change_Callback, h};
h.edit3.Callback = {@parameter_change_Callback, h};
guidata(h.fig, h);
function number_Callback(hObject,eventdata, h)
h = guidata(hObject);
h.signal_no = hObject.Value;
k = h.signal_no;
h.edit1.String = h.parameter1(k);
h.edit2.String = h.parameter2(k);
h.edit3.String = h.parameter3(k);
guidata(hObject,h);
function parameter_change_Callback(hObject,eventdata, h)
h = guidata(hObject);
k = h.signal_no;
h.parameter1(k) = str2double(h.edit1.String);
h.parameter2(k) = str2double(h.edit2.String);
h.parameter3(k) = str2double(h.edit3.String);
guidata(hObject, h);
당신은'guidata를 추가 할 필요가 단순화 된 콜백 선언으로 hObject입니다 , h);'귀하의 기능이 끝났을 때. 함수에 두 개의 입력을 추가해야합니다.'function simple_gui (hObject, h)' – Anthony
@Anthony, 내가 언급 한 명령을 추가했지만 도움이되지 않았습니다. "존재하지 않는 필드 'parameter1'에 대한 참조"오류가 발생합니다. 그러나 GUIDE를 사용하여 유사한 프로그램을 작성하면 올바르게 작동합니다. 그러나 나는 programmaticaly 코드를 작성하는 것을 선호하고 그것을 작동시키는 법을 배우고 싶다. –
죄송합니다, 제 제안은 끔찍한 잘못되었습니다. 나는 당신의 코드를 오해했습니다. 나중에 코드를 검사 할 것입니다. 아직 응답이 없으면 – Anthony