Main Content

구조체형 배열의 데이터를 구성하는 방법

구조체형 배열의 데이터를 구성할 수 있는 방법으로는 평면 구성과 요소별 구성의 최소 두 가지가 있습니다. 데이터에 가장 적합한 방법은 데이터에 대해 계획한 액세스 방법, 매우 큰 대규모 데이터 세트의 경우 시스템 메모리 제약 조건이 있는지 여부에 따라 달라집니다.

평면 구성을 사용하면 필드 내 모든 값에 더 쉽게 액세스할 수 있습니다. 요소별 구성을 사용하면 단일 요소 또는 단일 레코드에 관련된 모든 정보에 더 쉽게 액세스할 수 있습니다. 다음 섹션에는 구성의 각 유형을 보여주는 예가 나와 있습니다.

구조체형 배열을 생성하면 MATLAB®이 배열 헤더에 각 요소와 필드에 대한 정보를 저장합니다. 따라서, 더 많은 요소와 필드가 포함된 구조체는 동일한 데이터를 포함하는 더 간단한 구조체보다 더 많은 메모리를 필요로 합니다.

평면 구성

색 농도값에 해당하는 3개의 배열을 갖는 RGB 이미지가 있다고 가정해 보겠습니다.

RGB image represented with three arrays

작업 공간에 배열 RED, GREEN, BLUE가 있는 경우 다음 명령은 평면 구성을 사용하는 img라는 스칼라 구조체를 생성합니다.

img.red = RED;
img.green = GREEN;
img.blue = BLUE;

평면 구성을 사용하면 표시, 필터링 또는 기타 처리 작업을 수행하는 데 필요한 전체 이미지 평면을 쉽게 추출할 수 있습니다. 예를 들어, 빨간색 농도값에 0.9를 곱해 보겠습니다.

adjustedRed = .9 * img.red;

여러 이미지가 있는 경우 각 요소 img(1),...,img(n)이 전체 이미지를 포함하도록 img 구조체에 이미지를 추가할 수 있습니다. 구조체에 요소를 추가하는 예를 보려면 다음 섹션을 참조하십시오.

요소별 구성

환자 정보가 포함된 데이터베이스를 살펴보겠습니다. 각 레코드에 환자의 이름, 테스트 결과 및 청구 금액에 대한 데이터가 포함되어 있습니다.

Data structure of patient information

다음 명령문은 patient라는 구조체형 배열에 요소를 생성합니다.

patient(1).name = 'John Doe';
patient(1).billing = 127.00;
patient(1).test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205];

추가 환자는 구조체에서 새 요소에 해당합니다. 예를 들어, 두 번째 환자에 대해 요소를 추가해 보겠습니다.

patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68, 70, 68; 118, 118, 119; 172, 170, 169];

요소별 구성은 특정 환자의 데이터에 액세스하기 위한 간단한 인덱싱을 지원합니다. 예를 들어, 열이 아닌 행(차원 2)을 기준으로 계산하여 첫 번째 환자의 테스트 결과에 대한 평균을 구해 보겠습니다.

aveResultsDoe = mean(patient(1).test,2)

이 코드가 반환하는 결과는 다음과 같습니다.

aveResultsDoe =
   75.6667
  178.5000
  212.0000

참고 항목

관련 항목