구조체형 배열의 데이터를 구성하는 방법
구조체형 배열의 데이터를 구성할 수 있는 방법으로는 평면 구성과 요소별 구성의 최소 두 가지가 있습니다. 데이터에 가장 적합한 방법은 데이터에 대해 계획한 액세스 방법, 매우 큰 대규모 데이터 세트의 경우 시스템 메모리 제약 조건이 있는지 여부에 따라 달라집니다.
평면 구성을 사용하면 필드 내 모든 값에 더 쉽게 액세스할 수 있습니다. 요소별 구성을 사용하면 단일 요소 또는 단일 레코드에 관련된 모든 정보에 더 쉽게 액세스할 수 있습니다. 다음 섹션에는 구성의 각 유형을 보여주는 예가 나와 있습니다.
구조체형 배열을 생성하면 MATLAB®이 배열 헤더에 각 요소와 필드에 대한 정보를 저장합니다. 따라서, 더 많은 요소와 필드가 포함된 구조체는 동일한 데이터를 포함하는 더 간단한 구조체보다 더 많은 메모리를 필요로 합니다.
평면 구성
색 농도값에 해당하는 3개의 배열을 갖는 RGB 이미지가 있다고 가정해 보겠습니다.
작업 공간에 배열 RED
, GREEN
, BLUE
가 있는 경우 다음 명령은 평면 구성을 사용하는 img
라는 스칼라 구조체를 생성합니다.
img.red = RED; img.green = GREEN; img.blue = BLUE;
평면 구성을 사용하면 표시, 필터링 또는 기타 처리 작업을 수행하는 데 필요한 전체 이미지 평면을 쉽게 추출할 수 있습니다. 예를 들어, 빨간색 농도값에 0.9
를 곱해 보겠습니다.
adjustedRed = .9 * img.red;
여러 이미지가 있는 경우 각 요소 img(1),...,img(n)
이 전체 이미지를 포함하도록 img
구조체에 이미지를 추가할 수 있습니다. 구조체에 요소를 추가하는 예를 보려면 다음 섹션을 참조하십시오.
요소별 구성
환자 정보가 포함된 데이터베이스를 살펴보겠습니다. 각 레코드에 환자의 이름, 테스트 결과 및 청구 금액에 대한 데이터가 포함되어 있습니다.
다음 명령문은 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