이 문서에서는 배열 및 클러스터 데이터 타입에 대해 살펴보고 배열과 클러스터를 생성하고 활용하는 방법을 소개합니다.
배열은 여러 원소와 차원으로 구성되며 컨트롤이나 인디케이터 둘 중 하나입니다. 배열 안에는 컨트롤과 인디케이터가 동시에 포함될 수 없습니다. 원소는 배열에 들어 있는 데이터 또는 값입니다. 차원은 배열의 길이, 높이 또는 폭입니다. 배열은 유사한 데이터의 모음을 다룰 때와 반복 수행한 계산 결과를 저장할 때 매우 유용합니다.
배열의 원소에는 순서가 있습니다. 배열의 각 원소에는 대응되는 인덱스 값이 있는데, 배열 인덱스를 사용해 그 배열의 특정 원소에 접근할 수 있습니다. NI LabVIEW 소프트웨어에서 배열 인덱스는 0을 기준으로 합니다. 즉, 1차원 (1D) 배열에 n개의 원소가 들어 있는 경우 인덱스 범위는 0에서 n – 1까지라는 뜻이며, 여기서 인덱스 0은 배열의 첫 번째 원소를 가리키고, 인덱스 n – 1은 배열의 마지막 원소를 가리킵니다.
클러스터는 혼합된 타입의 데이터 원소를 하나의 그룹으로 묶습니다. 클러스터의 예로는 불리언 값, 숫자값, 문자열이 결합된 LabVIEW 에러 클러스터를 들 수 있습니다. 클러스터는 텍스트 기반 프로그래밍 언어의 레코드(record) 또는 구조체(struct)와 유사합니다.
배열과 유사하게, 클러스터는 컨트롤이나 인디케이터 둘 중 하나이며, 컨트롤과 인디케이터를 동시에 포함할 수 없습니다. 클러스터와 배열의 차이점은 클러스터는 크기가 고정되어 있지만, 배열은 크기를 변경할 수 있다는 점입니다. 또한 클러스터에는 여러 데이터 타입을 포함할 수 있지만, 배열은 한 가지 데이터 타입만 포함할 수 있습니다.
LabVIEW에서 배열을 생성하려면 프런트패널에 배열 셸을 배치한 다음, 배열 셸 안에 숫자, 불리언, 웨이브폼 컨트롤 또는 인디케이터와 같은 원소를 배치해야 합니다.
위에서 설명한 단계는 1D 배열을 생성하는 과정이었습니다. 2D 배열의 원소는 그리드 또는 행렬 안에 저장됩니다. 2D 배열의 각 원소에는 대응되는 인덱스 값 2개, 행 인덱스, 열 인덱스가 있습니다. 1D 배열에서와같이 2D 배열의 행 인덱스와 열 인덱스도 0을 기준으로 합니다.
2D 배열을 생성하려면 먼저 1D 배열을 생성한 뒤 차원을 추가해야 합니다. 앞서 생성한 1D 배열로 돌아갑니다.
이 단계까지는, 생성된 배열의 숫자형 원소가 0으로 흐리게 표시됩니다. 흐려진 배열 원소는 원소가 초기화되지 않았음을 나타냅니다. 원소를 초기화하려면 원소 내부를 클릭하고 흐릿한 0을 원하는 숫자로 바꾸십시오.
어떤 값으로든 원소를 초기화할 수 있습니다. 위에 표시된 값과 같을 필요는 없습니다.
배열 상수는 다른 배열과의 비교 기준으로 사용하거나 상수 데이터를 저장하는 데 사용할 수 있습니다.
배열을 For 루프에 입력으로 연결하면 LabVIEW에서는 오토인덱싱 기능을 사용해 For 루프의 카운트 터미널을 배열의 크기로 자동 설정하는 옵션을 제공합니다. 배열에 연결된 루프 터널을 마우스 오른쪽 버튼으로 클릭하고 인덱싱 활성화(인덱싱 비활성화)를 선택하여 오토인덱싱 옵션을 활성화하거나 비활성화할 수 있습니다.
오토인덱싱을 활성화하면 For 루프의 반복문이 실행될 때마다 배열의 원소가 반복문에 전달됩니다.
어떤 값을 For 루프의 출력으로 연결할 때, 오토인덱싱을 활성화하면 배열이 출력됩니다. 이 배열은 크기가 For 루프의 반복 횟수와 같고 For 루프의 출력값을 포함합니다.
블록다이어그램
프런트패널
두 개 이상의 루프 터널에서 오토인덱싱을 활성화하고 For 루프 카운트 터미널을 연결하면, 반복 횟수는 선택한 것 중 작은 것과 같습니다. 예를 들어, 아래 그림에서는 For 루프 카운트 터미널이 15회로 설정되어 있고, 배열 1에는 원소가 10개, 배열 2에는 원소가 20개 들어 있습니다. 그림의 VI를 실행하면, For 루프가 10회 실행되고 배열 결과에는 10개의 원소가 포함됩니다. 이 예제를 실행하여 결과를 확인해 보십시오.
아래와 같이, 중첩된 For 루프와 오토인덱싱을 사용해 2D 배열을 만들 수 있습니다. 바깥 For 루프는 행의 원소를 생성하며, 안쪽 For 루프는 열의 원소를 생성합니다.
>
이제는 별개의 세 와이어가 아니라 한 와이어로 블록다이어그램 전체에서 숫자형, 문자열 및 불리언 컨트롤을 연결할 수 있습니다.
배열 상수와 마찬가지로, 클러스터 상수는 다른 클러스터와의 비교 기준으로 사용하거나 상수 데이터를 저장하는 데 사용할 수 있습니다. 앞서 설명한 단계에서 배열 상수를 생성한 것과 동일한 방법으로 클러스터 상수를 생성합니다.
이미 클러스터 컨트롤 또는 인디케이터가 있고 동일한 데이터 타입이 있는 클러스터 상수를 만들고 싶으면, 블록다이어그램에서 클러스터 컨트롤 또는 인디케이터의 복사본을 만든 다음에 복사본을 마우스 오른쪽 버튼으로 클릭하여 바로 가기 메뉴에서 상수로 변경을 선택하십시오.
이 길라잡이에서는 클러스터 조작에 종종 사용되는 4개의 기본 클러스터 함수에 대해 살펴봅니다. 이 기본 함수는 묶기, 풀기, 이름으로 묶기, 이름으로 풀기 함수입니다.
개별 원소를 클러스터로 묶으려면 묶기 함수를 사용하십시오. 원소를 묶기 함수에 연결하려면 마우스로 함수의 크기를 조정하거나 함수를 마우스 오른쪽 버튼으로 클릭하고 바로 가기 메뉴에서 입력 추가를 선택하십시오.
기존 클러스터를 수정하려면 이름으로 묶기 또는 묶기 함수를 사용하십시오. 묶기 함수와 동일한 방식으로 이름으로 묶기 함수의 크기를 조정할 수 있습니다.
이름으로 묶기 함수를 사용하면 어떤 클러스터 원소를 수정 중인지 정확히 알 수 있으므로 기존 클러스터를 수정할 때 매우 유용합니다. 예를 들어, ‘문자열 1’과 ‘문자열 2’라는 라벨이 지정된 두 문자열 원소가 포함된 클러스터를 생각해보십시오. 묶기 함수를 사용해 클러스터를 수정하면 함수 터미널이 분홍색 abc의 형태로 나타납니다. 어떤 터미널이 ‘문자열 1’을 수정하고 어떤 터미널이 ‘문자열 2’를 수정하는지는 모릅니다.
하지만 이름으로 묶기 함수를 사용해 클러스터를 수정하는 경우, 함수 터미널이 원소 라벨을 표시하므로 어떤 터미널이 ‘문자열 1’을 수정하고 어떤 터미널이 ‘문자열 2’를 수정하는지 알 수 있습니다.
클러스터 묶음을 풀어 개별 원소로 돌려 놓으려면 풀기 함수를 사용하십시오. 이름을 기준으로 지정한 특정 클러스터 원소를 풀어 놓으려면 이름으로 풀기 함수를 사용하십시오. 또한 묶기 및 이름으로 묶기 함수와 동일한 방식으로 여러 원소용으로 이들 함수의 크기를 조정할 수도 있습니다.
클러스터 원소는 셸에서의 위치와 관계없이 논리적인 순서를 갖습니다. 클러스터에 넣는 첫 번째 객체는 원소 0, 두 번째 객체는 원소 1이 되는 방식으로 순서가 정해집니다. 원소를 삭제하면 순서가 자동으로 조정됩니다. 블록다이어그램에 있는 묶기 및 풀기 함수에서 원소가 터미널로 표시되는 순서는 클러스터 순서에 의해 결정됩니다. 클러스터 경계에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 클러스터 내의 컨트롤 순서 재설정을 선택하여 클러스터 순서를 보고 수정할 수 있습니다.
각 원소에 있는 흰 상자는 클러스터 내의 해당 원소 위치를 나타냅니다. 검은 상자는 원소의 새 순서를 나타냅니다. 클릭하여 설정합니다 텍스트 박스에 새 순서를 나타내는 숫자를 입력하고, 클러스터 원소를 클릭하여 그 순서를 설정할 수 있습니다. 클러스터 원소의 순서가 변경되고, 이에 따라 다른 원소의 클러스터 순서도 자동으로 조정됩니다. 도구 모음에서 확인 버튼을 클릭하여 변경된 순서를 저장합니다. 취소 버튼을 클릭하면 이전의 원래 순서로 되돌아갑니다.