Main Content

속성값 액세스

객체 속성 및 점 표기법

그래프 작성 함수는 객체, 혹은 함수에서 생성되는 객체를 반환합니다. 예를 들면 다음과 같습니다.

h = plot(1:10);

h는 1에서 10 사이의 값으로 구성된 그래프에 그려진 선을 나타냅니다.

점 표기법 구문은 점(.)으로 연결된 객체 변수와 대/소문자 구분 속성 이름을 사용하여 객체.속성 이름 표기법을 구성합니다.

object.PropertyName

객체 변수가 비 스칼라인 경우 인덱싱을 사용하여 단일 객체를 참조합니다.

object(n).PropertyName

스칼라 객체 변수

hplot 함수로 생성되는 선일 경우 표현식 h.Color는 이 특정 선의 Color 속성에 대한 값입니다.

h.Color
ans =

         0    0.4470    0.7410

색 값을 변수로 할당하는 경우 다음을 사용합니다.

c = h.Color;

변수 c는 double형입니다.

whos
  Name      Size            Bytes  Class  

  c         1x3                24  double   
  h         1x1               112  matlab.graphics.chart.primitive.Line 

대입문을 사용하여 이 선의 Color 속성에 대한 값을 변경할 수 있습니다.

h.Color = [0 0 1];

표현식에 점 표기법 속성 참조를 사용합니다.

meanY = mean(h.YData);

또는 속성값을 변경하려면 다음을 사용합니다.

h.LineWidth = h.LineWidth + 0.5;

여러 점 참조를 사용하여 속성에 포함된 기타 객체를 참조합니다.

h.Annotation.LegendInformation.IconDisplayStyle
ans =

on

속성에 포함된 객체의 속성을 설정합니다.

ax = gca;
ax.Title.FontWeight = 'normal';

비 스칼라 객체 변수

그래픽스 함수는 객체로 구성된 배열을 반환할 수 있습니다. 예를 들면 다음과 같습니다.

y = rand(5);
h = plot(y);
size(h)
ans =

     5     1

배열 인덱스를 사용하여 y에서 첫 번째 열을 나타내는 선에 액세스합니다.

h(1).LineStyle = '--';

set 함수를 사용하여 배열의 모든 선에 대한 LineStyle을 설정합니다.

set(h,'LineStyle','--')

속성값에 데이터 추가

점 표기법으로 "end" 인덱싱을 사용하여 선의 XDataYData와 같은 데이터 배열을 포함하는 속성에 데이터를 추가할 수 있습니다. 예를 들어, 다음 코드는 선의 XDataYData를 함께 업데이트하여 선을 확장합니다. 선의 x축 데이터 및 y축 데이터의 크기가 동일하도록 한 후, drawnow에 대한 호출을 사용하여 렌더링하거나 MATLAB®으로 반환하여야 합니다.

h = plot(1:10);
for k = 1:5
   h.XData(end + 1) = h.XData(end) + k;
   h.YData(end + 1) = h.YData(end) + k;
   drawnow
end

그래픽스 객체 변수는 핸들임

그래픽스 함수에서 반환되는 객체 변수는 핸들입니다. 핸들은 실제 객체에 대한 참조입니다. 핸들인 객체 변수는 복사되거나 객체가 삭제될 때 특정한 방법으로 동작합니다.

객체 변수 복사

예를 들어, 하나의 선으로 구성된 그래프를 생성합니다.

h = plot(1:10);

이제, 객체 변수를 다른 변수로 복사하고 새 객체 변수를 사용하여 속성값을 설정합니다.

h2 = h;
h2.Color = [1,0,0]

객체 변수 hh2로 할당하면 변수에서 참조되는 객체가 아니라 핸들에 대한 복사본이 생성됩니다. 변수 h에서 액세스되는 Color 속성의 값은 변수 h2에서 액세스되는 속성값과 동일합니다.

h.Color
ans =

     1     0     0

hh2는 동일한 객체를 참조합니다. 핸들 객체 변수를 복사해도 객체는 복사되지 않습니다.

객체 변수 삭제

동일한 선을 참조하는 객체 변수가 이제 작업 공간에 두 개 있습니다.

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

이제 선 그래프를 포함하는 Figure를 닫습니다.

close gcf

line 객체는 더 이상 존재하지 않지만, line을 참조한 객체 변수는 여전히 존재합니다.

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

하지만, 이 객체 변수는 더 이상 유효하지 않습니다.

h.Color
Invalid or deleted object.
h2.Color = 'blue'
Invalid or deleted object.

유효하지 않은 객체 변수를 제거하려면 clear를 사용합니다.

clear h h2

객체 속성 나열

객체가 포함하는 속성을 확인하려면 get 함수를 사용합니다.

get(h)

MATLAB은 객체 속성과 해당 현재 값의 목록을 반환합니다.

    AlignVertexCenters: 'off'
            Annotation: [1x1 matlab.graphics.eventdata.Annotation]
          BeingDeleted: 'off'
            BusyAction: 'queue'
         ButtonDownFcn: ''
              Children: []
              Clipping: 'on'
                 Color: [0 0.4470 0.7410]
...
             LineStyle: '-'
             LineWidth: 0.5000
                Marker: 'none'
...

set 함수를 사용하여 가능한 값이 열거된 집합에서 속성값을 확인할 수 있습니다.

set(h,'LineStyle')
    '-'
    '--'
    ':'
    '-.'
    'none'

열거된 값의 집합과 함께 속성에 쓰일 수 있는 값을 포함한, 모든 설정 가능한 속성을 표시하려면 객체 변수와 함께 set를 사용합니다.

set(h)

set 및 get으로 속성 수정하기

set 함수와 get 함수를 사용하여 속성을 액세스하고 수정할 수도 있습니다.

기존 객체에 대한 속성값을 설정하는 데 사용할 수 있는 기본 구문은 다음과 같습니다.

set(object,'PropertyName',NewPropertyValue)

특정 객체 속성의 현재 값을 쿼리하려면 다음 형식의 명령문을 사용합니다.

returned_value = get(object,'PropertyName');

속성 이름은 항상 문자형 벡터입니다. 작은따옴표를 사용하거나, 문자형 벡터 형식의 변수를 사용할 수 있습니다. 속성값은 특정 속성에 따라 다릅니다.

여러 객체/속성 작업

객체 인수가 배열인 경우 MATLAB은 모든 식별된 객체에 지정된 값을 설정합니다. 예를 들면 다음과 같습니다.

y = rand(5);
h = plot(y);

모든 선을 빨간색으로 설정합니다.

set(h,'Color','red')

여러 객체에 동일한 속성을 설정하려면 구조체 또는 셀형 배열을 사용하여 속성 이름과 속성값을 지정합니다. 예를 들어, 특정 그래프를 표시하는 데 적절하게 axes 속성을 설정하도록 구조체를 정의합니다.

view1.CameraViewAngleMode = 'manual';
view1.DataAspectRatio = [1 1 1];
view1.Projection = 'Perspective';

현재 좌표축에 대해 이러한 값을 설정하려면 다음을 입력합니다.

set(gca,view1)

여러 속성 쿼리

속성 이름으로 구성된 셀형 배열을 정의하고 이 배열을 사용하여 해당 속성에 대한 값을 가져올 수 있습니다. 예를 들어, 좌표축의 "카메라 모드" 속성에 대한 값을 쿼리하고자 한다고 가정하겠습니다. 우선, 셀형 배열을 정의합니다.

camModes = {'CameraPositionMode','CameraTargetMode',...
'CameraUpVectorMode','CameraViewAngleMode'};

이 셀형 배열을 인수로 사용하여 이러한 속성의 현재 값을 가져옵니다.

get(gca,camModes)
ans = 
     'auto' 'auto' 'auto' 'auto'