배열
- 업데이트 날짜:2025-08-27
- 6분 (읽기 시간)
배열은 원소와 차원으로 구성됩니다. 원소는 배열을 구성하는 데이터입니다. 차원은 배열의 길이, 높이, 또는 폭입니다. 배열은 하나 또는 그 이상의 차원을 가질 수 있으며, 메모리가 허용하는 경우 차원마다 최대 (231)–1개의 원소를 가질 수 있습니다.
숫자형, 불리언, 경로, 문자열, 웨이브폼, 클러스터 데이터 타입의 배열을 만들 수 있습니다. 비슷한 데이터들로 작업을 하거나 반복된 연산을 수행하는 경우에 배열을 사용하면 유용할 수 있습니다. 배열은 웨이브폼에서 수집한 데이터나 루프에서 생성된 데이터를 저장하는데 이상적입니다. 이 경우, 루프는 매 반복마다 배열의 원소를 하나씩 생성하게 됩니다. 배열에서 Microsoft Excel과 같은 곳으로 데이터를 반출할 수 있습니다. 배열에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 반출을 선택하여 사용 가능한 반출 옵션을 봅니다.
제약
배열로 이루어진 배열은 만들 수 없습니다. 그렇지만, 다차원의 배열을 사용하거나 각각의 클러스터가 하나 또는 그 이상의 배열을 포함하는 클러스터의 배열을 생성할 수 있습니다. 또한 서브패널 컨트롤, 탭 컨트롤, .NET 컨트롤, ActiveX 컨트롤, 차트, 멀티플롯 XY 그래프 또는 여러 열 리스트박스의 배열도 생성할 수 없습니다.
인덱스
특정 원소를 배열에 위치시키기 위해서는 차원당 한 개의 인덱스가 필요합니다. LabVIEW에서 인덱스는 배열을 탐색하고 블록다이어그램의 배열에서 원소나, 행, 열, 그리고 페이지를 불러오기 위해 사용됩니다.
배열의 예
태양계의 8개 행성을 나열한 문자 배열이 간단한 배열의 예입니다. LabVIEW에서 이것은 8 개의 원소가 있는 1D 문자열 배열로 나타납니다.
배열의 원소에는 순서가 있습니다. 배열에서는 인덱스를 사용하여 사용자가 특정 원소에 접근할 수 있도록 합니다. 인덱스는 0부터 시작합니다. 이는 n 개의 원소를 가진 배열에 대하여 0에서 n - 1 범위로 인덱스됨을 의미합니다. 예를 들어, n = 8인 8 개의 행성에 대하여 인덱스는 0에서 7이 됩니다. 지구는 세 번째 행성이므로 인덱스는 2입니다.
배열에 대한 또 다른 예는 다음 그림과 같이 연속적인 시간 간격에서 각 연속되는 원소가 연속되는 시간 간격에서의 볼트값인 숫자 배열로 표현되는 웨이브폼입니다.
좀더 복잡한 배열에 대한 예제는 다음 그림과 같이 포인트 배열로 나타내는 그래프입니다. 여기서 각 포인트는 X와 Y 좌표를 나타내는 숫자값의 쌍을 포함하는 클러스터입니다.
이전 예제는 1D 배열을 사용합니다. 2D 배열의 원소는 셀 안에 저장됩니다. 특정 원소를 찾으려면 행 인덱스와 열 인덱스가 필요하며, 이 인덱스는 0을 기준으로 시작됩니다. 다음 그림은 8 × 8 = 64 원소를 가진 2D 배열의 8행과 8열을 보여줍니다.
예를 들어, 체스판은 8행 8열이며 총 64개 자리가 있습니다. 각 자리는 비어있거나 한 개의 체스말이 위치할 수 있습니다. 체스판은 2D 문자열 배열로 나타낼 수 있습니다. 각 문자열은 체스판의 대응하는 위치에 있는 체스말의 이름이며, 빈 곳은 빈 문자열로 나타납니다.
배열에 행을 추가하여 이전 1D 배열 예제를 2차원으로 일반화할 수 있습니다. 다음 그림은 2차원 숫자값 배열로 표현되는 웨이브폼들의 집합을 보여줍니다. 행 인덱스는 웨이브폼을 선택하고, 열 인덱스는 그 웨이브폼의 포인트를 선택합니다.
배열을 사용한 예제는 labview\examples\Arrays\Arrays.lvproj를 참조하십시오. 관련 예제 찾기
배열 컨트롤, 인디케이터, 상수 생성하기
아래의 프런트패널과 같이 프런트패널에 배열 쉘을 추가한 후, 숫자형, 불리언, 문자열, 경로, 참조 번호 또는 클러스터 컨트롤이나 인디케이터와 같은 데이터 객체 또는 원소를 배열 쉘 안으로 끌어와 배열 컨트롤이나 배열 인디케이터를 만들 수 있습니다.
배열 쉘은 새 객체에 맞도록 자동으로 크기가 조절됩니다.
블록다이어그램에서 배열 상수를 생성하려면, 함수 팔레트에서 배열 상수를 선택하고, 블록다이어그램에 배열 쉘을 놓은 후, 문자열 상수, 숫자형 상수, 불리언 상수 또는 클러스터 상수를 배열 쉘 안에 놓습니다. 배열 상수는 다른 배열과 비교를 할 때의 기준으로 사용하거나, 상수 데이터를 저장하는 데 사용할 수 있습니다.
다차원 배열 생성하기
프런트패널에 다차원 배열을 추가하려면, 인덱스 디스플레이에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 차원 추가를 선택합니다. 또한 인덱스 디스플레이의 크기를 조정하여 원하는 수만큼의 차원을 만들 수 있습니다. 한 번에 한 개의 차원을 삭제하려면, 인덱스 디스플레이를 마우스 오른쪽 버튼으로 클릭한 후 바로 가기 메뉴에서 차원 제거를 선택합니다. 또한, 인덱스 디스플레이를 크기 조정하여 차원을 제거할 수도 있습니다.
특정 원소를 프런트패널에 디스플레이하기 위하여, 인덱스 디스플레이에 인덱스 숫자를 입력하거나 또는 인덱스 디스플레이의 화살표를 이용하여 해당 숫자를 탐색합니다.
예를 들면 2D 배열은 행과 열을 가지고 있습니다. 다음 프런트패널에서 보이는 것처럼, 왼쪽에 있는 두 박스의 위쪽 디스플레이는 행 인덱스이고 아래쪽 디스플레이는 열 인덱스입니다. 행과 열의 표시를 합하여 지정된 위치의 값을 보여줍니다. 다음 프런트패널은 6 행, 13 열의 값이 66임을 보여줍니다.
| 1 | 행 인덱스 |
| 2 | 열 인덱스 |
| 3 | 행과 열 위치에서의 값 |
행과 열은 0을 기준으로 하며, 첫번째 행이 0번 행, 두번째 행이 1번 행이 됩니다. 다음 배열에서 인덱스 디스플레이를 1행, 2열로 변경하면 6의 값이 나타납니다.
| 0 | 1 | 2 | 3 |
| 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 |
배열 차원의 범위를 벗어난 영역의 행과 열을 보이려고 하면, 그곳에는 정의된 값이 없다는 것을 나타내기 위하여, 배열 컨트롤이 회색화되어 나타나며 LabVIEW는 해당하는 데이터 타입의 기본값을 보여줍니다. 데이터 타입의 기본값은 배열의 데이터 타입에 의존합니다.
위치 도구를 사용하여 한 번에 하나 이상의 행과 열이 보이도록 배열의 크기 조정을 합니다.
또한, 특정한 원소를 탐색하기 위해 배열의 스크롤 막대를 사용할 수 있습니다. 배열을 마우스 오른쪽 버튼으로 클릭한 후 바로 가기 메뉴에서 보이는 아이템≫수직 스크롤 막대를 선택하거나 또는 보이는 아이템≫수평 스크롤 막대를 선택하여 배열에서 스크롤 막대를 디스플레이합니다.
| 노트 LabVIEW의 배열 함수는 행 우선 순서로 배열 데이터에 접근합니다. 2D 배열에서는 행이 우선하는 인덱스가 됩니다. 열은 보조 인덱스의 역할을 합니다. 더 큰 다차원 배열에서는 열은 마지막 인덱스의 역할을 하며, 그보다 우선하는 인덱스 여러 개가 그 앞에 추가됩니다. 그러므로 볼륨이 가장 우선순위가 높은 첫번째 인덱스가 되며, 그 다음에 페이지, 행, 열의 형태가 됩니다. 이러한 이름은 인덱스 식별자이며 다른 의미는 없습니다. |
배열 함수
배열 함수를 사용하여 배열을 생성하고 조작합니다. 예를 들어, 다음 그림과 같은 태스크를 수행할 수 있습니다:
- 배열에서 개별 데이터 원소를 빼냅니다.
- 배열에서 데이터 원소를 삽입, 삭제, 또는 대체합니다.
- 배열을 분리합니다.
[배열 만들기] 함수를 사용하여 배열을 프로그램적으로 만듭니다. 또한, 배열을 만들기 위해 루프를 사용할 수 있습니다.
루프 안에서 배열 함수를 사용할 때 메모리 사용을 최소화하는 방법에 대한 추가적인 팁은 LabVIEW Style Checklist를 참조하십시오.
배열 함수의 자동 크기 조절
[배열 인덱스], [배열 부분 대체], [배열에 삽입], [배열로부터 삭제], [배열 잘라내기] 함수는 자동적으로 연결한 입력 배열의 차원에 맞도록 크기 조정합니다. 예를 들면, 1D 배열을 이들 함수에 연결하면 함수는 단일 인덱스 입력만 나타납니다. 만약 2D 배열을 같은 함수에 연결하면 두 개의 인덱스 입력을 보여줍니다. 하나는 행, 다른 하나는 열에 대한 입력을 나타냅니다.
위치 도구를 사용하여 함수의 크기를 수동으로 조절하여 이들 함수에서 하나 이상의 원소나 부분배열(행, 열, 또는 페이지)에 접근할 수 있습니다. 이들 함수 중 하나를 확장할 때, 함수에 연결된 배열의 차원에 따라 늘어나는 폭이 결정됩니다. 1D 배열을 이들 함수에 연결한 경우, 함수는 한 개의 인덱스 입력씩 확장할 수 있습니다. 만약 2D 배열을 같은 함수에 연결한 경우, 함수는 행과 열에서 각각 하나씩인 두 개의 인덱스 입력을 확장할 수 있습니다.
연결한 인덱스 입력이 접근하거나 수정하려고 하는 부분배열의 형태를 결정합니다. 예를 들면, [배열 인덱스] 함수의 입력이 2D 배열이고 행 입력에만 연결했을 경우, 배열에서 1D 행을 추출합니다. 열 입력에만 연결했을 경우, 배열에서 1D 열을 통째로 추출합니다. 행 입력과 열 입력에 모두 연결했을 경우, 배열에서 한 개의 원소를 추출합니다. 각 입력 그룹은 독립적이며 배열의 모든 차원의 모든 부분에 접근할 수 있습니다.
다음 블록다이어그램은 [배열 인덱스] 함수를 사용하여 2D 배열에서 행과 원소를 가져옵니다.
배열에서 여러 연속되는 값에 접근하기 위하여 [배열 인덱스] 함수를 확장합니다. 그러나 각 증분의 인덱스 입력에 값을 연결하지 않습니다. 예를 들어, 2D 배열에서 첫번째, 두번째, 그리고 세번째 행을 뽑아내려면, [배열 인덱스] 함수를 3 개의 인덱스로 확장한 다음 1D 배열 인디케이터를 각 부분배열 출력에 연결합니다.
배열의 기본 데이터
배열의 범위를 벗어나는 인덱스 선택은 배열 원소 파라미터에 기본값을 생성합니다. [배열 크기] 함수를 사용하여 배열의 크기를 결정할 수 있습니다.
While 루프를 사용하여 마지막 원소를 넘어 배열을 인덱스하거나, [배열 인덱스] 함수의 인덱스 입력에 너무 큰 값을 입력하거나, [배열 인덱스] 함수에 빈 배열을 공급하면, 의도치 않게 배열의 경계를 넘어 인덱스할 수 있습니다.