오픈소스 & 자료공유 게시판

LabVIEW에서 MathScript 노드 대신 MATLAB 스트립트 노드 사용하기 - 벤치마크 예제

Code and Documents

Attachment

개요

Windows 컴퓨터에서는 LabVIEW MathScript 대신 LabVIEW MATLAB 스크립트 노드를 사용하도록 권장합니다. MATLAB 스크립트 노드는 데이터 분석, 커브 피팅, 스펙트럼 분석, 신호 처리, 통계, 기계 학습을 포함한 여러 다양한 태스크에 사용할 수 있습니다. 그래픽 LabVIEW 코드는 MATLAB 스크립트 노드와 결합되어 시스템 프로그래밍, 자동화, I/O에 사용될 수 있습니다.

이 문서에서는 LabVIEW에서 MATLAB 스크립트 노드와 MathScript 노드 간 차이점을 설명하고, MathScript 노드에서 MATLAB 스크립트 노드로 마이그레이션할 때 사용할 수 있는 두 가지 옵션(데스크탑 옵션과 Real-Time 옵션)을 보여주며, 여러 계산 태스크에 사용할 수 있는 예제 벤치마크 VI에 대해 설명합니다. 예제 VI는 이 문서에 압축 (Zip) 파일로 첨부되어 제공됩니다.

 

설명

MATLAB 스크립트 노드와 MathScript 노드의 주요 차이점

첨부된 예제 벤치마크 VI MATLAB 스크립트 노드와 MathScript 노드를 모두 포함합니다. 다음 테이블은 이 두 노드 사이의 주요 차이점을 보여줍니다. MATLAB 스크립트 노드는 같은 컴퓨터에 설치된 MATLAB 소프트웨어에 ActiveX 호출을 보내 스크립트를 실행합니다. LabVIEW에서 MATLAB 스크립트 노드를 사용하려면 Windows 컴퓨터에 LabVIEW MATLAB의 정품이 모두 설치되어 있어야 합니다. 이 방식에는 여러 이점이 있습니다. MATLAB 정품에 포함되는 툴박스, 객체, 데이터 타입을 모두 제한 없이 사용할 수 있게 됩니다. 또한 사용하는 구문과 숫자형 데이터가 모두 MATLAB과 호환됩니다.

 

MathScript Table Korean.PNGMATLAB 스크립트 노드와 MathScript 노드의 주요 차이점

 

 

마이그레이션 옵션 - MATLAB과의 IDE-IDE 통신 방법 또는 컴파일된 MATLAB 코드 사용

아래의 의사 결정 트리는 MathScript 노드를 사용하는 대신 MATLAB과의 IDE-IDE 통신 방법을 사용하거나 MathWorks 코드 컴파일 소프트웨어로 개발된 컴파일 코드 옵션을 사용하는 추가 마이그레이션 옵션을 보여줍니다. 우선 사용하는 어플리케이션을 검토하여 데스크탑 어플리케이션인지 아니면 Real-Time 타겟에서 MathScript를 활용하는 경우인지 확인해야 합니다. 데스크탑 어플리케이션이면, LabVIEW에서 MathScript 노드 대신 MATLAB 스크립트 노드를 사용하거나, LabVIEW NXG MATLAB용 인터페이스로 전환할 수 있습니다. LabVIEW NXG로의 전환을 고려한다면, 어플리케이션의 나머지 부분이 포팅 준비가 되었는지, 사용하는 하드웨어가 완전히 지원되는지 확인하십시오.

또한 의사 결정 트리는 LabVIEW Real-Time 어플리케이션과 Mac/Linux 테스크탑 컴퓨터를 위한 옵션도 포함합니다. LabVIEW Real-Time 어플리케이션의 경우, MathScript 노드 대신 Model Interface Toolkit을 컴파일된 MATLAB 코드와 결합하여 사용하는 것이 좋습니다스크립트를 Simulink 다이어그램의 MATLAB 함수 블록에 놓을 수 있습니다. Simulink 모델은 주로 인포트 및 아웃포트와 함께 한 개 이상의 MATLAB 함수 블록으로 구성됩니다.  Simulink 모델이 지속 시간 컴포넌트를 포함하지 않는 경우에는, 지속 시간 해답기를 선택하는 대신, Real-Time 어플리케이션에 대해 고정 구간 불연속 해답기를 선택할 수 있습니다. Simulink 다이어그램 내에 MATLAB 함수 블록이 포함된 예제는 Running Compiled Simulink® Models in LabVIEW and in VeriStand 문서에서 확인할 수 있습니다.

Real-Time 어플리케이션이 있는데 Simulink Simulink Coder를 사용할 수 없는 경우, LabVIEW Real-Time의 라이브러리 함수 호출 노드를 컴파일된 MATLAB 코드와 함께 사용할 수 있습니다.

Mac 또는 Linux 데스크탑 컴퓨터의 경우, MATLAB 정품과의 IDE-IDE 통신을 위해 시스템 실행 VI를 사용하도록 선택하거나, 컴파일된 MATLAB 코드와 함께 라이브러리 함수 호출 노드를 사용할 수 있습니다.

 

Tree Diagram Korean.PNG

 

 

MATLAB 스크립트 노드 및 MathScript 노드를 위한 예제 벤치마크 VI

이 문서에는 3개의 VI가 첨부되어 있으며, 여기에는 그래픽 LabVIEW 코드와 함께 MATLAB 스크립트 노드 및 MathScript 노드를 위한 예제 벤치마크가 포함됩니다각각의 방식이 케이스 구조에서 개별 케이스로 포함됩니다.  3개의 VI에는 다음 태스크가 포함됩니다.

  • 입력 배열의 빠른 푸리에 변환 (FFT)
  • 입력 행렬의 LU 인수분해
  • 예제 스크립트(secondord.m)에 지정된 상미분 방정식(ODE)의 수치 해법

이 예제 VI는 여러 번 계산을 실행하고 평균 계산 시간을 산정합니다. 제외할 웜업 계산 횟수와 함께 실행할 계산 횟수를 지정할 수 있습니다.  MATLAB 스크립트 노드를 위해 MATLAB과의 통신을 시작해야 한다는 점을 고려해 웜업 계산을 제외할 수 있는 옵션이 생성되었습니다.

FFT LU 예제 벤치마크 VI는 각 메소드에 대해 각기 동일한 입력 배열 및 행렬을 사용합니다.  ODE 예제 벤치마크 VI는 각 메소드에 대해 동일한 미분 방정식과 초기 조건을 사용합니다.

MATLAB 스크립트 노드와 MathScript 노드의 기본 계산 엔진은 서로 다르지만, 각 메소드의 셋팅은 유사한 숫자 결과를 제공하도록 선택됩니다. ODE 벤치마크의 경우 주의할 점은 MATLAB 스크립트 노드로 사용자가 가변 구간 해답기의 최소 구간 시간을 선택할 수 없다는 것입니다. MATLAB 해법의 포인트 개수를 확인해보면 MathScript와 비교해 포인트 개수가 약간 더 많다는 것을 알 수 있습니다(121 112). 그러나 평균 MATLAB 계산 시간이 MathScript보다 더 짧습니다.

아래 테이블은 Windows 컴퓨터에서 3 VI를 실행한 결과를 보여줍니다 VI에서, 선택된 실행 횟수는 20이고, 이때 각 메소드에 대해 2번의 웜업 실행이 평균 계산 시간에서 제외됩니다. LU ODE 태스크의 경우 MATLAB 스크립트 노드가 MathScript 노드보다 더 빠릅니다. FFT 태스크의 경우에는 더 느립니다.

 

Table2 Korean.PNGWindows 벤치마크 결과 테이블, 20번 실행, 2번 웜업 실행 제외

(Intel Core i7-7600U CPU @ 2.80GHz)

 

 

어플리케이션의 사용자 정의 벤치마크를 계산하려는 경우 사용자가 만든 코드와 적절한 입력을 사용하여 예제 벤치마크 VI를 수정할 수 있습니다.

각 노드의 출력이나 그래픽 코드는 예제 벤치마크 VI에 포함되지 않습니다. 케이스 안에 있는 코드를 새 VI에 복사하여 출력을 검토 및 비교할 수 있습니다. ODE 계산의 응답 플롯은 추가 예제에 포함되어 개별 압축 (Zip) 파일로 이 문서에 첨부됩니다.

VI의 스크린샷과 secondord.m 스크립트는 아래에 제공됩니다.

Snippet 1 Korean.pngFFT 예제 벤치마크의 스크린샷

 

 

Snippet 2 Korean.png

LU 예제 벤치마크의 스크린샷

 

Snippet 3 Korean.PNG

ODE 예제 벤치마크의 스크린샷

secondord.m:

function dydt = secondord(t, y);

dydt = [y(2); -2*y(1) - y(2)];

 

하드웨어 및 소프트웨어 요구사항

Windows에 필요한 소프트웨어:

  • LabVIEW 2018 (32비트) 또는 이후 버전
  • LabVIEW 2018 MathScript Module (32비트) 또는 이후 버전
  • MATLAB 2018a 또는 이후 버전

필요한 하드웨어 없음.

 

코드 실행 단계

 

예제 설치하고 MATLAB에서 경로 설정하기:

다음 3개 예제 벤치마크 VI와 지원 스크립트(MATLAB 스크립트 및 MathScript용 예제 벤치마크 압축 파일에 포함) Windows 컴퓨터의 Documents > LabVIEW Data 폴더에 놓습니다.

  • Benchmarking FFT VI
  • Benchmarking LU VI
  • Benchmarking ODE VI
  • secondord.m

 또한 같은 컴퓨터의 MATLAB 환경에 LabVIEW Data 폴더의 경로가 추가되었는지 확인합니다.

예제 벤치마크 VI 실행하기:

각 예제 벤치마크 VI를 실행하고 결과를 관찰할 수 있습니다. 원하는 경우, 실행 횟수와 각 계산의 평균 시간에서 제외할 웜업 실행 횟수를 변경할 수 있습니다.

 

추가 정보 및 참조

MATLAB 스크립트 노드

MathScript Module

Carli S.
Troubleshooting & Maintenance Digital Business Manager - National Instruments

Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.

Contributors