Main Content

guidata

UI 데이터 저장 또는 가져오기

설명

예제

참고

메인 앱 Figure의 UserData 속성에 앱 데이터를 저장하면 코드의 가독성을 높일 수 있기 때문에 guidata를 사용하는 것보다 이 방법을 권장합니다. 앱 데이터 저장 및 공유에 대한 자세한 내용은 콜백 간 데이터 공유하기 항목을 참조하십시오.

guidata(obj,data)obj가 Figure이면 지정된 데이터를 해당 애플리케이션 데이터에 저장하고, 또 다른 컴포넌트이면 obj의 부모 Figure에 저장합니다. 자세한 내용은 guidata가 데이터를 관리하는 방식 항목을 참조하십시오.

예제

data = guidata(obj)는 이전에 저장된 데이터를 반환하거나, 저장된 데이터가 없는 경우 빈 행렬을 반환합니다.

예제

모두 축소

클릭하면 카운터 데이터를 저장하고 가져오는 프로그래밍 방식 UI를 만듭니다.

먼저 progCounter.m이라는 프로그램 파일을 생성합니다. 프로그램 파일 내에서 다음을 수행합니다.

  • Figure를 생성합니다.

  • 필드 값이 0으로 초기화된 구조체를 만듭니다.

  • Figure에 데이터를 저장합니다.

  • Figure에서 데이터를 가져오고, 데이터를 변경하고, 새 데이터를 다시 Figure에 저장하는 콜백 함수를 정의합니다.

프로그램을 실행하고, Figure 안쪽을 클릭합니다. 명령 창에 업데이트된 데이터가 나타납니다.

f = figure;
data.numberOfClicks = 0; 
guidata(f,data)
f.ButtonDownFcn = @My_Callback;

function My_Callback(src,event)
data = guidata(src);
data.numberOfClicks = data.numberOfClicks + 1;
guidata(src,data)
data
end
data = 

  struct with fields:

    numberOfClicks: 1

GUIDE에서 버튼을 만든 다음, 버튼을 눌렀을 때 데이터를 저장하고 액세스합니다. 이렇게 하려면 먼저 handles 구조체에 필드를 추가하고, guidata를 사용하여 필드를 업데이트하고 관리하십시오. (handles를 덮어쓰는 대신 데이터를 추가하십시오. 자세한 내용은 GUIDE가 guidata를 사용하는 방식 항목을 참조하십시오.) 그런 다음 버튼을 눌렀을 때 guidata를 사용하여 데이터를 액세스하고 저장하는 콜백을 구성합니다.

이렇게 하려면 먼저 GUIDE를 열고 레이아웃 영역에 누름 버튼을 추가하십시오. 그런 다음 편집기 아이콘을 클릭하여 편집을 위해 프로그램 파일을 엽니다. GUIDE에 의해 자동으로 생성된 OpeningFcn을 찾고 handlesnumberOfClicks라는 새 필드를 추가합니다.

% --- Executes just before countClicks is made visible.
function countClicks_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to countClicks (see VARARGIN)

% Choose default command line output for countClicks
handles.output = hObject;

handles.numberOfClicks = 0;

% Update handles structure
guidata(hObject, handles);

다음으로, GUIDE에 의해 생성된 누름 버튼 콜백 함수를 찾습니다. 콜백 함수가 handles에 저장된 데이터에 액세스하고, 데이터를 수정하고, 변경된 데이터를 구조체에 저장하고, 새 데이터를 명령 창에 표시하도록 프로그래밍합니다. GUIDE에서는 콜백이 실행 중인 객체를 참조하기 위해 src 대신 hObject를 사용한다는 점에 유의하십시오.

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% 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)

handles.numberOfClicks = handles.numberOfClicks + 1;
guidata(hObject,handles)
data = guidata(hObject)
>> countClicks

data = 

  struct with fields:

           figure1: [1×1 Figure]
       pushbutton1: [1×1 UIControl]
            output: [1×1 Figure]
    numberOfClicks: 1

입력 인수

모두 축소

Figure, Axes, Illustration 또는 UI 객체와 같은 그래픽스 객체입니다. 이 인수를 사용하여 data를 저장하는 Figure를 지정합니다. 지정된 객체가 Figure가 아닐 경우 data를 저장하는 데 객체의 부모 Figure가 사용됩니다.

Figure에 저장할 데이터로, 임의의 MATLAB 데이터로 지정됩니다. 일반적으로 data는 구조체로 지정되므로 필요에 따라 새 필드를 추가할 수 있습니다. 예를 들어, 다음과 같이 Category라는 필드가 있는 데이터 구조체를 만들고, 필드의 데이터를 구조체에 저장하고, 저장된 데이터를 명령 창에 표시합니다.

data.Category = 'Projected Growth';
guidata(gcf,data);
data = guidata(gcf)

알고리즘

모두 축소

guidata가 데이터를 관리하는 방식

guidata는 언제든지 부모 Figure 하나당 하나의 변수만 관리할 수 있습니다. 이후에 guidata(obj,data)를 호출하면 이전에 저장된 데이터를 덮어씁니다. 추가 데이터는 여러 필드를 갖는 구조체를 만들어 저장하십시오.

GUIDE가 guidata를 사용하는 방식

GUIDE는 guidata를 사용하여 handles라는 구조체를 저장하고 유지합니다. GUIDE 코드 파일에서는 handles 구조체를 덮어쓰지 마십시오. 프로그램이 더 이상 동작하지 않게 됩니다. 다른 데이터를 저장해야 할 경우에는 handles 구조체에 새 필드를 추가하면 됩니다.

버전 내역

R2006a 이전에 개발됨