랩뷰 배열 다루기
- LabVIEW 랩뷰/Labview 랩뷰 강의
- 2021. 1. 11.
안녕하세요. 10강에서는 앞으로 다루게 될 데이터 처리, XY 그래프 만들기 등에서 핵심적으로 사용할 배열에 대해서 알아보도록 하겠습니다. [7강 랩뷰의 데이터 구조] 글에서 배열에 대해서 간략히 알아보았습니다.
1. 배열(Array)이란
배열은 동일한 데이터 타입을 묶어 놓은 객체입니다. 배열에 들어있는 각각의 값을 원소라고 하며, 각 원소의 위치를 인덱스(index)라고 합니다. 보통 엑셀에서 사용하는 행과 열로 표현되는 2차원 배열을 주로 사용할 예정입니다.
2. 배열 만들기
랩뷰에서 배열은 동일한 데이터 타입을 묶어야 하기 때문에, 배열 껍데기 안에 특정 데이터를 넣어주면 배열을 생성할 수 있습니다. 컨트롤/인디케이터/상수 모두 동일한 방법으로 배열을 만들 수 있습니다.
3. 배열의 인덱스
배열의 차원이 증가함에 따른 인덱스 디스플레이 개수도 증가합니다. 배열 차원 증가에 따른 인덱스 디스플레이의 정보는 아래 그림을 참고하시기 바랍니다. 4차원 인덱스까지는 인덱스의 명칭을 랩뷰에서는 아래와 같이 말하고 있습니다.
- 2차원 인덱스 : 행(Row)과 열(Column)
- 3차원 인덱스 : 페이지(Page), 행과 열
- 4차원 인덱스 : 볼륨(Vol), 페이지, 행과 열
- 5차원 이상 : N-차원, 볼륨, 페이지, 행과 열
4. 배열 다루기
1) 배열 만들기(Build Array)를 통해 배열 쌓기
배열 만들기 함수는 동일한 원소들을 모아 1차원 배열을 만들거나, 1차원 배열을 모아 2차원 배열을 만드는 데 사용합니다. 아래 코드는
- 동일한 숫자형 상수를 배열 만들기를 통해 1차원 배열을 생성
- 동일한 숫자형 1차원 배열을 배열 만들기를 통해 2차원 배열을 생성
- 동일한 숫자형 2차원 배열을 배열 만들기를 통해 3차원 배열을 생성
하는 코드입니다. 즉, 기본적으로 배열 만들기 함수를 사용하면 배열의 차원이 증가합니다.
그렇다면 배열의 차원을 늘리지 않고 아래처럼 2차원 배열에 배열을 삽입하려면 어떻게 해야 할까요?
2가지 방법을 선택할 수 있습니다.
- 배열 삽입하기 : 배열 만들기를 '입력 연결'로 변경 (가장 많이 사용하는 방법)
배열 만들기 함수를 오른쪽 클릭하여 입력 연결(Concetanate Inputs)을 클릭합니다. 입력 연결을 클릭하면 배열 만들기의 맨 위 터미널에 연결된 배열에 이후에 연결되는 배열이 추가됩니다. 아래 그림을 보겠습니다. 입력 연결을 누르면 기존에 생성되어 있던 3차원 배열의 와이어가 깨지는데, 배열 만들기 함수의 출력이 2차원 배열이 되기 때문입니다. 따라서 기존에 생성되어 있던 배열의 차원을 2차원으로 변경해 주어야 합니다.
- 배열 삽입하기 : 배열에 입력(Insert Into Array) 함수 사용
배열에 입력 함수는 기존 배열에 어느 부분에 추가 배열을 삽입할 것인지를 세세하게 정할 수 있습니다. 배열에 입력 함수의 입력 터미널에 최초 배열을 연결하고, 삽입 터미널에 배열을 연결해 주면 됩니다. 인덱스 터미널에 아무것도 입력하지 않은 경우 행 인덱스는 기존 배열의 맨 마지막 행 인덱스가 자동으로 선택되어 가장 아래 행에 추가 배열이 입력됩니다.
행 인덱스에 1을 입력하면, 기존 배열의 1번행 아래에 추가하는 배열이 삽입됩니다.
2) 배열 인덱스(Index Array)를 이용하여 특정 행, 열, 원소를 분리하기
이번에는 배열 인덱스 함수를 사용하여 배열에서 원소를 분리하거나, 2차원 배열에서 행 또는 열을 분리하는 방법에 대해서 알아보겠습니다.
첫 번째로 1차원 배열에서 원소를 분리하는 방법입니다. 1차원 배열에 배열 인덱스 함수를 연결하면 추출할 원소의 인덱스를 입력하는 터미널이 있습니다. 1차원 배열에서 추출하고 싶은 원소의 인덱스를 입력하면 원소가 출력됩니다. 이때, 아무것도 연결하지 않으면 기본적으로 인덱스 0이 입력되어 첫 번째 원소가 출력됩니다.
배열 인덱스 함수의 아래 부분을 드래그하면 출력할 인덱스를 여러 개 선택할 수 있습니다. 이 때 인덱스에 아무것도 연결하지 않으면 0부터 인덱스가 1씩 늘어납니다. 중간에 인덱스를 입력하면, 그 이후에는 1씩 늘어난 인덱스가 자동으로 입력됩니다.
두 번째로 2차원 배열에서 행과 열 또는 원소를 추출하는 방법입니다. 2차원 배열을 배열 인덱스에 연결하면 행과 열 인덱스를 선택할 수 있는 터미널이 생성됩니다. 여기서 행(row)은 기본으로 0이 선택되어 있고, 열(col)은 비활성화(disabled)되어 있습니다. 특정 행을 배열로 출력하면 열 인덱스는 필요가 없기 때문입니다. 행 인덱스를 2를 입력하고 마찬가지로 열 인덱스를 비활성화시켜 놓으면 2차원 배열의 세 번째 행(인덱스 2)이 출력됩니다.
열 인덱스에 1을 입력하고, 행 인덱스에 아무것도 연결하지 않으면 자동으로 행 인덱스는 비활성화됩니다. 출력 배열은 두번째 열(인덱스 1)이 1차원 배열로 출력됩니다.
행과 열 인덱스에 모두 값을 입력하면, 2차원 배열의 특정 원소가 출력됩니다. 여기서는 행열에 (1,3)인덱스를 넣었으므로 원소 7이 출력됩니다.
3) 배열 분리(Array Subset)를 이용하여 배열의 특정 부분을 분리하기
배열 인덱스를 사용하면 특정 행이나 열, 원소를 분리할 수 있지만 행의 어디부터 어디까지를 잘라서 추출할 수는 없습니다. 배열 분리 함수는 분리할 배열의 인덱스의 처음과 끝을 지정하여 배열을 분리할 수 있습니다. 배열 인덱스와 다른 점은 배열 분리 함수는 배열을 분리해도 차원이 유지되어 출력됩니다.
이 정도면 배열을 만들고, 쌓고, 분리하는 방법에 대해서는 훑어본 듯 싶습니다. 여타 배열 팔레트에 나와있는 배열로부터 삭제하기, 배열 부분 대체하기 등 여러 가지 함수에 대해서는 대부분 위에서 알아본 것과 같은 규칙을 따르므로 한 번 해보시는 게 좋겠습니다. 혹시 시간이 된다면(?) 이 글 아래에 다른 배열 함수들에 대해서도 작성해 보겠습니다.
다음 시간은 루프에서 배열을 활용하는 방법에 대해서 알아보겠습니다.
'LabVIEW 랩뷰 > Labview 랩뷰 강의' 카테고리의 다른 글
XY 그래프 만들기 기초 (0) | 2021.01.14 |
---|---|
루프와 함께 배열 다루기 (2) | 2021.01.13 |
랩뷰의 루프(Loop) 사용하기 (4) | 2021.01.10 |
경합조건 : 랩뷰의 코드 실행 순서 (0) | 2021.01.08 |
랩뷰 데이터 구조 알아보기 (0) | 2021.01.08 |