행렬 사용하기
- 업데이트 날짜:2025-08-27
- 5분 (읽기 시간)
2D 배열 대신 행렬 데이터 타입을 사용하여 행렬 데이터를 나타냅니다. 행렬 데이터 타입은 행렬 연산, 특히 일부 선형 대수 연산에서 실수나 복소수 스칼라 데이터의 행 또는 열을 저장하기 때문입니다. 행렬 연산을 수행하는 수학 VI는 행렬 데이터 타입을 받고 행렬 결과를 반환합니다. 이로 인해 데이터 흐름에서 이후의 다형성 VI와 함수가 행렬 특정의 연산을 수행할 수 있습니다. 수학 VI가 행렬 연산을 수행하지 않으나 행렬 데이터 타입을 받는 경우, 해당 VI는 자동으로 행렬 데이터 타입을 2D 배열로 변환합니다. 2D 배열을 기본으로 행렬 연산을 수행하는 VI에 연결하는 경우, 해당 VI는 2D 배열의 데이터 타입에 따라 자동으로 2D 배열을 실수 또는 복소수 행렬로 변환합니다.
대부분의 숫자 함수는 행렬 데이터 타입과 행렬 연산을 지원합니다. 예를 들어, [곱하기] 함수를 사용하여 행렬에 다른 행렬 또는 숫자를 곱할 수 있습니다. 기본 숫자 데이터 타입과 복소수 선형 대수 함수를 결합하여 정확한 행렬 연산을 수행하는 숫자 알고리즘을 생성할 수 있습니다.
실수 행렬은 배정도 원소를 포함하며 복소수 행렬은 배정도 구성요소를 가진 복소수 원소를 포함합니다. 행렬은 두 차원만 가질 수 있습니다. 행렬의 배열은 생성할 수 없습니다. [묶기] 함수를 사용하여 둘 이상의 행렬을 결합하여 클러스터를 생성합니다. 행렬은 배열과 같은 제한을 갖습니다.
[행렬] 함수를 사용하여 행렬의 원소, 행, 열을 조작합니다. 행렬 함수는 행렬 데이터 타입을 반환합니다. 예를 들어, [행렬 원소 얻기] 함수를 통해 행렬의 행 또는 열을 추출하면, 스칼라 값의 1D 배열이 아닌 단일 행 또는 열의 행렬이 생성됩니다. 스칼라 값의 2D 배열이 아닌 행렬을 생성하려면, 이 행렬을 [행렬 만들기] 함수의 다른 배열과 통합시킵니다.
행렬의 차원을 줄이는 모든 VI는 데이터를 1D 배열 또는 배정도 부동소수나 복소수로 변환하도록 요구합니다. 2D 구조를 다시 만들기 위해 1D 배열 또는 숫자를 사용하는 경우, LabVIEW는 원래 행렬이 아닌 2D 배열을 생성합니다.
다음의 블록다이어그램은 For 루프에서 오토인덱싱을 사용하여 행렬에서 데이터를 추출하고 행렬을 2D 배열로 다시 만듭니다.
오토인덱싱이 활성화되어 있는 경우, For 루프는 행렬을 2D 배열로 취급합니다. VI의 일정 포인트에서 행렬 데이터 타입을 입력으로 사용해야하는 경우, 다음 블록다이어그램에서 보이는 것처럼 [배열을 행렬로] 함수를 사용하여 2D 배열을 행렬로 변환하십시오.
데이터를 행렬 데이터 타입으로 유지하려면, 오토인덱싱을 비활성화하고 시프트 레지스터를 사용하십시오. 예를 들어, 다음의 블록다이어그램은 시프트 레지스터를 사용하여 행렬의 2차원과 데이터 타입을 유지합니다. 시프트 레지스터는 반복 사이에 행렬 데이터 타입을 전달합니다.
행렬 데이터 타입을 받는 많은 다형성 함수는 연산 자체가 배열 기반 연산인 경우에도 행렬 데이터 타입을 반환합니다. 블록다이어그램의 함수 또는 subVI가 행렬 데이터 타입을 2D 배열로 변환하고 데이터 흐름에서 다음의 작업이 배열 기반 작업인 경우, 배열로의 변환을 허용하고 배열 데이터로 작업한 후, 선형 대수 VI를 사용할 때와 같이 필요할 때 [배열을 행렬로] 함수를 사용하여 배열을 행렬로 변환합니다.
| 노트 블록다이어그램에 행렬 데이터 타입을 받으나 2D 배열을 반환하는 subVI가 포함된 경우, 배열을 기본으로 행렬 데이터 타입을 받는 다형성 VI 또는 함수에 연결하기 전에는 결과 배열을 다시 행렬로 변환하지 않아도 됩니다. 데이터를 행렬로 저장해야 하는 경우, [행렬을 배열로] 함수를 사용하여 데이터를 다시 행렬로 변환합니다. |
행렬 컨트롤, 인디케이터, 상수 생성하기
기본으로, 행렬 컨트롤과 인디케이터는 하나 이상의 원소를 보여주고 두 차원 모두의 스크롤 막대를 디스플레이합니다. 행렬 컨트롤이 타입 정의이므로, 행렬 컨트롤의 바로 가기 메뉴는 차원 추가와 차원 제거 옵션을 제외하고 타입 정의 옵션을 포함합니다. 블록다이어그램에 행렬 상수를 생성하려면, 컨트롤 팔레트에서 행렬 컨트롤을 선택하고 블록다이어그램에 놓거나 임의의 행렬 터미널에서 상수를 생성합니다. 배열 상수를 사용하여 상수 데이터를 저장하거나 다른 행렬와 비교하기 위한 기준으로 삼을 수 있습니다.
블록다이어그램에서 행렬 데이터 타입은 다른 와이어 패턴을 가진 실수 2D 배열 또는 복소수 2D 배열 데이터 타입처럼 보입니다. 행렬 데이터 타입을 받는 VI 및 함수는 사용자가 행렬 데이터 타입을 입력으로 연결할 때 자동으로 행렬 특정 작업을 지원합니다.
행렬 데이터 타입을 입력으로 다음 함수 중 하나에 연결할 때, 행렬 데이터 타입을 사용하는 subVI를 포함하는 VI는 함수를 대체합니다.
- 같음?
- 같지 않음?
- 절대값
- 더하기
- 곱하기
- 제곱근
- 빼기
- 지수
- 자연로그
- X의 거듭제곱
- 실수/허수를 복소수로
- 복소수를 실수/허수로
- 극좌표를 복소수로
- 복소수를 극좌표로
결과 VI는 같은 아이콘을 가지지만 행렬 특정 알고리즘을 포함합니다. 입력으로부터 행렬을 연결 해제할 경우 노드는 VI를 남깁니다. 다른 데이터 타입을 입력으로 연결하여 원래 함수를 복구합니다. 데이터 타입을 함수에 연결하고 데이터 타입이 기본 수학 연산에서 실패를 유발할 경우, 함수는 빈 행렬 또는 NaN을 반환합니다. 예를 들어, 2×3 차원의 행렬을 [더하기] 함수의 입력에 연결한 후 3×2 행렬을 다른 입력에 연결한 경우, 함수는 빈 행렬을 반환합니다.
행렬 비교하기
[같음?] 및 [같지 않음?] 함수를 사용하여 행렬을 비교합니다. 이 함수는 행렬 입력의 경우 집합 비교 모드에서 작동하며 배열을 비교하는 것과 같은 규칙을 따릅니다.
둘 또는 그 이상의 입력을 받는 숫자형 함수가 행렬과 2D 배열을 입력으로 받으면, 대부분의 경우 함수는 행렬 데이터 타입을 반환합니다. 커넥터 팬에 연결된 출력이 2D 배열이 아는 경우 함수는 배열 연산을 수행합니다. 예를 들어, 실수 행렬과 실수 2D 배열을 [나누기] 함수에 연결하는 경우, 기본으로 함수는 함수의 결과를 포함하는 실수 행렬 출력을 반환합니다. 실수 행렬과 복소수 2D 배열을 연결하는 경우, 출력이 복소수 원소를 요구하기 때문에 함수는 복소수 2D 배열을 반환합니다. 두번째 경우에서, 함수가 연산을 위해 실수 행렬을 복소수 2D 배열로 변환하였음을 나타내기 위해 실수 행렬이 연결된 입력에 강제 변환점이 나타납니다.
행렬의 기본 크기와 값
고정된 수의 원소로 행렬의 크기를 제한할 수 없습니다. 그러나 행렬 컨트롤의 기본값을 설정하면, 기본 크기는 설정할 수 있습니다.
필요 이상 크게 행렬의 기본 크기를 만들지 않습니다. 행렬의 기본 크기를 크게 설정한 경우, 행렬의 각 원소를 위한 기본 데이터를 VI에 저장할 때 디스크에서 VI의 크기가 증가합니다.
행렬 컨트롤을 프런트패널에 추가할 때, 컨트롤은 처음에 빈 행렬을 나타냅니다. 각 차원은 0이며 행렬 원소는 비활성화됩니다. 프런트패널 행렬 컨트롤은 두 개의 기본값을 가집니다. 즉, 부동소수 또는 복소수 기본값인 행렬 기본값과 각 셀의 기본값입니다.
행렬 기본값은 다른 모든 프런트패널 컨트롤의 기본값과 같습니다. 행렬 기본값은 VI가 로드될 때 배열의 값입니다. 또한, 호출하는 VI에 값이 연결되어 있지 않은 경우 subVI에 있는 행렬이 사용될 수 있습니다.
스칼라 기본값은 행렬이 확장될 때 행렬을 채우는데 사용되는 값입니다. 예를 들면, 행렬 인덱스를 행렬의 정의된 부분 밖의 값으로 설정하고 원소에 행렬의 정의된 부분을 지난 한 행보다 큰 값을 입력하는 경우, 행렬의 이전 끝과 추가한 원소 사이의 원소는 스칼라 기본으로 설정됩니다.
행렬 함수의 경우, 함수가 유효하지 않은 작업을 수행할 때 원래의 행렬 또는 2D 배열의 바깥 부분에 값이 나타납니다. 유효하지 않은 작업의 경우에는 LabVIEW가 바깥 부분에 반환하거나 채우는 값이 원래의 행렬 또는 2D 배열의 데이터와 원소 타입에 따라 달라집니다. 유효하지 않은 작업의 값은 행렬을 확장시킬 때 나타나는 기본 값 0과는 다릅니다.