Main Content

그래픽스 배열

그래픽스 배열에는 임의 그래픽스 객체의 핸들이 포함될 수 있습니다. 예를 들어, 다음과 같은 plot 함수에 대한 호출은 line 객체 핸들을 5개 포함하는 배열을 반환합니다.

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

  5x1 Line array:

  Line
  Line
  Line
  Line
  Line

이 배열은 line 객체에 대한 핸들만 포함합니다. 하지만, 그래픽스 배열에는 둘 이상의 그래픽스 객체 유형이 포함될 수 있습니다. 즉, 그래픽스 배열은 이종 배열일 수 있습니다.

예를 들어, Figure, axes 및 line 객체의 핸들을 하나의 배열 harray로 결합(Concatenate)할 수 있습니다.

hf = figure;
ha = axes;
hl = plot(1:10);
harray = [hf,ha,hl]
harray = 

  1x3 graphics array:

    Figure    Axes      Line

그래픽스 배열은 모든 MATLAB® 배열과 동일한 규칙을 따릅니다. 예를 들어, 배열 요소 차원은 일치해야 합니다. 다음 코드에서 플롯은 5×1 선 배열을 반환합니다.

hf = figure;
ha = axes;
hl = plot(rand(5));
harray = [hf,ha,hl];
Error using horzcat
Dimensions of matrices being concatenated are not consistent.

배열을 형성하려면 다음과 같이 hl을 전치해야 합니다.

harray = [hf,ha,hl']
harray = 

  1x7 graphics array:

   Figure    Axes      Line      Line      Line      Line      Line

숫자형 데이터는 객체 핸들과 결합(Concatenate)할 수 없습니다. 단, Figure의 Number 속성으로 지정되는 고유 식별자는 예외입니다. 예를 들어, Number 속성이 1로 설정된 기존 Figure가 있는 경우 이 숫자로 해당 Figure를 참조할 수 있습니다.

figure(1)
aHandle = axes;
[aHandle,1]
ans = 

  1x2 graphics array:

    Axes      Figure

배열 형성에 대한 동일한 규칙이 인덱스 참조 값 할당에도 적용됩니다. 예를 들어, 다음과 같이 for 루프를 사용하여 핸들 배열을 빌드할 수 있습니다.

harray = gobjects(1,7);
hf = figure;
ha = axes;
hl = plot(rand(5));
harray(1) = hf;
harray(2) = ha;
for k = 1:length(hl)
   harray(k+2) = hl(k);
end