확장 성은 JMP의 특징 중 하나입니다. 에서 JMP 11 , JMP를 MATLAB과 통합 할 수 있습니다. JSL (JMP Scripting Language)에서 JMP에서 MATLAB로 데이터를 보내고 MATLAB 함수를 실행하고 MATLAB에서 결과를 JMP로 반환하여 분석 및 시각화를 수행 할 수 있습니다.
MathWorks의 소프트웨어 솔루션 인 MATLAB은 수치 계산, 데이터 분석, 시각화 및 사용자 지정 엔지니어링 모델 및 응용 프로그램 구축을위한 매트릭스 프로그래밍 언어 및 대화 형 프로그래밍 환경입니다. MATLAB 사용자가 필요에 따라 특수 모델링 및 설계 작업을 수행하는 기능에 액세스 할 수있게 해주는 도구 상자라고하는 풍부한 애드온 모듈 세트가 포함되어 있습니다.
JMP의 MATLAB 인터페이스는 일련의 함수로 JSL을 통해 MATLAB에 대한 액세스를 제공합니다. 기본 실행 모델은 먼저 MATLAB 연결을 초기화하고 필요한 MATLAB 작업을 수행 한 다음 MATLAB 연결을 종료합니다. 사용 패러다임은 JMP의 R 인터페이스와 매우 유사합니다.
이 글에서는 인터페이스를 JMP 11 설치 환경에서 실행하는 방법을 간략하게 소개하고 인터페이스 사용 방법에 대한 몇 가지 기본 예를 제시하고자합니다. 인터페이스의 세부 사항에 대한 자세한 내용은 백지 조지아 공과 대학 (Georgia Institute of Technology)의 항공 우주 시스템 디자인 연구소 (Aerospace Systems Design Laboratory)의 연구 엔지니어 인 존 샐몬 (John Salmon)과 공동 저서를 썼습니다.
우선, 먼저 설치 지침을 비켜 봅시다. 자세한 지침은 온라인에서 확인할 수 있습니다. 도움 , 여기 퀵 스타트 가이드가 있습니다.
MATLAB은 JMP와 동일한 컴퓨터에 설치해야하며 JMP는 MATLAB 복사본과 함께 배포되지 않습니다.JMP는 32 비트 및 64 비트 Windows 응용 프로그램으로 지원되므로 해당 32 비트 또는 64 비트 버전의 MATLAB을 설치해야합니다.JSL 스크립트가 MATLAB에 액세스 할 때까지 JMP가 MATLAB 로딩을 지연시킵니다. JMP가 MATLAB을로드해야 할 때, JMP는 현재 검색 경로를 기반으로 PathVar 변수. 이것은 MATLAB 인터페이스의 플랫폼 환경 설정을 사용하여 설정해야합니다.MATLABROOT을 컴퓨터의 MATLAB 설치 경로로 설정하면 JMP가 MATLAB을 찾을 위치를 알 수 있습니다 (아래 그림 참조).
플랫폼 환경 설정에서 경로를 설정 한 후에는 MATLAB Init ();을 실행하여 MATLAB 연결이 작동 하는지를 빠르게 확인할 수 있습니다. 기능. 연결이 성공하면 함수는 0을 로그로 리턴합니다. 작업이 성공적이지 않으면 오류 메시지가 나타납니다.
이제 인터페이스가 어떻게 작동하는지 예를 들어 봅시다. 이 예제는 인터페이스 워크 플로의 각 단계를 보여주기 때문에보다 복잡한 스크립트의 좋은 프로토 타입 역할을합니다. 첫 번째 단계는 MATLAB Init ();로 MATLAB 연결을 초기화하는 것입니다. 요구. 그런 다음, 우리는 MATLAB Submit (); 함수는 MATLAB에서 일부 MATLAB 코드를 실행합니다. 이 경우 입력 매개 변수가 3 인 "magic"함수를 실행하고 그 결과를 다음과 같은 변수에 저장합니다. 엠. 데려 오기 위해 엠 JMP에서 결과를 더 사용하기 위해 JMP 변수 공간에 행렬을 추가하면 MATLAB Get (); 함수로 저장됩니다. 엠 우리가 명명 한 JMP 변수에 그것을 할당합니다 : magicMat . 우리의 작은 프로그램의 결과를보기 위해 우리는 magicMat 로그에 저장하고 아래 그림과 같이 데이터를 JMP 데이터 테이블로 가져옵니다. 마지막으로 MATLAB 세션을 MATLAB Term ()으로 종료합니다. 명령.

여기서 얻는 이점은 MATLAB 프로그램의 데이터가 JMP 데이터 테이블에 있으며 MATLAB 코딩을 추가하지 않고도 시각화, 모델링 또는 탐색 할 준비가되었음을 의미합니다. 또한 MATLAB 모델 출력을 탐색하기 위해 JMP의 대화 형 기능을 활용할 수 있으며, 데이터 시각화 (예 : 그래프 빌더, 컨트롤 차트 작성기, 배포), 데이터 분석 (모델에 맞게, 파티션, 스크리닝 등) 및 추가 데이터 정리 및 요약 ( 테이블 메뉴, 도표 작성 등). 
이제는 기본적인 것을 했으니 조금 더 재미있게 놀자. 직장 외의 취미 중 하나는 스피커 디자인과 건물입니다. 아래는 현재 진행중인 디자인에 대한 사진입니다. MATLAB과 JMP를 사용하여이 스피커를 설계하고 튜닝하는 데 도움이 될 것입니다. 작년에 설정에 추가 한 멋진 점 중 하나는 MiniDSP입니다. MiniDSP는 스피커와 크로스 오버의 신속한 프로토 타이핑을 훨씬 쉽게 해주는 놀랄만 한 작은 장치이며 패시브 크로스 오버 구성 요소를 구입해야하는 번거 로움과 비용도 절약 해줍니다.

MiniDSP를 사용하면 시간 정렬, 저역 통과 필터 및 고역 통과 크로스 오버 필터 및 실내 교정과 같은 여러 가지 작업을 수행 할 수 있습니다. 내 스피커를 내 방에서 가장 잘 들리게하려면 어떻게해야하는지 어떻게 알 수 있습니까? 내가 알고있는 것을 창조한다. 임펄스 응답 (IR) 스피커를 통해 스위프 사인파 측정 신호를 재생 한 다음 마이크를 사용하여 출력을 녹음합니다. 젖은 신호에서 건조 신호를 빼면 측정 된 신호가 IR을 생성합니다. 남은 것은 내 방에서 소리가 어떻게 썩는지를 설명하는 데이터 세트입니다. 그러나 내가 알아야 할 것은 실제로 시간 영역에있는 데이터가 아니라 내 스피커의 주파수 응답입니다. 다행히 FFT (Fast Fourier Transform) 알고리즘을 사용하여 시간 영역 데이터를 분석하면 분석하기 쉽습니다.
내가 보여줄 예제는베이스 리플렉스 포트의 회전이 캐비닛의 모델에 얼마나 가깝게 있는지 확인하려고했을 때 측정 한 것입니다. 이를 위해 왼쪽 스피커의 양쪽 포트 사이에 마이크를 스피커에 가깝게 놓았습니다. 포트에서 나오는 직접적인 사운드가 반사 된 사운드보다 너무 진폭이 크기 때문에 룸 반사에 대해 걱정할 필요가 없습니다. 연설자의 광대역 응답을 보려면 다른 방법을 사용해야합니다 (스피커를 외부에 가져와 받침대에 올려 놓은 다음 반사음을내는 방법을 사용해야 함). 그러나이 방법은 스피커가 될 때까지 기다려야합니다. 약간 따뜻한).
여기 측정 값에 대한 시간 영역 데이터가 있습니다.

제가 정말로하고 싶은 것은 이것을 주파수 영역으로 변환하여 응답을 구상하고 질문에 대답 할 수 있습니다 : 포트가 공명 (약 55Hz)되어야합니까?
이 분석을 위해 JMP에서 데이터를 가져 와서 MATLAB으로 보내고 FFT를 수행하고 결과 벡터를 적절하게 레이블이 지정된 빈 빈을 가진 새로운 데이터 테이블로 반환하도록 작성한 함수를 실행하려고합니다 ( 내 MATLAB 함수 내 샘플 속도입니다).
앞으로 새로운 측정을 위해이 분석을 자동화하기 위해 필자는이 분석을 새로운 JMP 응용 프로그램으로 바꾸어 추가 기능으로 패키지화하고 JMP 메뉴에 추가 할 수 있습니다. 진폭 데이터가있는 열을 묻는 간단한 대화 상자입니다.

OK를 누르면 MATLAB으로 데이터를 왕복 전송하고 FFT를 수행 한 다음 분석 결과를 다시 데이터 테이블로 반환하는 JSL을 실행합니다. 실제로 MATLAB 스크립트를 실행하는 데 필요한 코드는 매우 간단합니다. 26 번 줄에 변수를 보냅니다. yvec 이는 사용자가 MATLAB 변수 공간에 대한 응용 프로그램에서 선택한 응답 역할에 해당합니다. 그런 다음 FFT 함수를 실행하는 데 필요한 MATLAB 코드를 제출합니다. 필자의 경우 모든 IR은 44.1kHz에서 샘플링되므로 calcFFT 함수의 입력 목록에이를 하드 코딩했습니다. 샘플 속도가 다양하면 응용 프로그램에 텍스트 입력 필드를 추가 한 다음 선택을 내 함수 호출에 전달할 수 있습니다.

내 함수는 fftsignal과 freqArray에 관심이있는 두 벡터를 반환합니다. 그런 다음 두 변수를 JMP 변수 공간으로 가져 와서 MATLAB Get (); 함수를 호출하고 결과에서 테이블을 만듭니다.
결과가 나타나면 Graph Builder를 사용하여 주파수 응답 그래프를 생성 할 수 있습니다.

나는 20Hz - 400Hz의 주파수 응답에 초점을 맞추어 포트 튜닝 동작 (그래프에서 피크로 나타남)을 볼 수 있습니다. 내 모델을 기반으로 예상 한 것보다 약간 높습니다. 따라서 내 방에서 필요한 주파수 응답을 얻기 위해 MiniDSP의 저주파수 채널에 약간의 저음 증폭을 추가해야 할 수도 있습니다.
JMP의 기능을 확장하기 위해 JMP와 MATLAB을 함께 사용할 수있는 위치의 한 예를 보았습니다. 이 백서에서는 JMP를 사용하여 사용자 정의 디자이너를 사용하여 실험 설계를 설정하고 MATLAB에서 시뮬레이션 실험을 실행 한 다음 분석, 요인 프로파일 링 및 변수 중요성 평가를 위해 결과를 JMP로 반환하는 등 몇 가지 다른 예를 살펴 봅니다.
아직 JMP 11에서 MATLAB에 대한 JMP 인터페이스를 사용해 보셨습니까? 당신이 있다면, 나는 당신의 이야기를 듣고 싶습니다!
제프 퍼킨슨 쓴 :
코멘트에서 여기서 해결하기가 어려울 수 있습니다. 기술 지원 부서에 support@jmp.com으로 우편을 보내실 수 있으며 문제의 원인을 파악하는 데 도움을받을 수 있습니다. 또는 귀하의 질문을 토론 섹션 JMP 사용자 커뮤니티 .
샘 김 쓴 :
불행히도 내 로그는 "0"대신 MATLAB init ();을 실행하면 "1"을 반환합니다. 뭘 잘못했는지 말해 줄 수 있니?
엠마누엘 쓴 :
죄송합니다, 난 그냥 파일을 다운로드, 거기에 완전한 팩, 감사합니다 것 같습니다
엠마누엘 쓴 :
스크립트에 몇 가지 오류가 있습니다. 또한 동영상 중 하나를보고 있었고 일부 오타가 있습니다.
첫 번째 예는 로그에 Colum 이름 오류가 있습니다. 그래서 그 부분을 제거해야합니다 :
MATLAB Init ();
MATLAB 제출 ( "m = magic (3)");
magicMat = MATLAB get (m);
쇼 (magicMat);
dt = 테이블로 (magicMAt);
MATLAB 용어 ();
그래서 효과가있다.
내가 관심있는 부분 인 FFT는 MATLAB Init ();
현재 로그에 오류가 있습니다.
" 'double'유형의 입력 인수에 대해 정의되지 않은 함수 'calcFFT_FR12'."
25,000 데이터 샘플을 보내 주실 수 있습니까?
그래서 나는 그것을 검토 할 수있다.
미리 감사드립니다.
다니엘 발렌테 쓴 :
안녕하세요 엠마누엘 -
너는 할 수있다. 다운로드 백서의 샘플 스크립트 : File Exchange의 "JMP Extensibility Synergy with MATLAB"
MATLAB 함수에 대한 디렉토리를 어떻게 설정합니까? 호출중인 MATLAB 함수를 JMP 스크립트와 동일한 폴더에 배치했지만 JMP는 함수를 인식하지 못한다고 말합니다. Daniel이 제공 한 MATLAB 예제 폴더에는이 MATLAB Submit ( "cd 'REPLACE'");가 있습니다. MATLAB이 MATLAB에 경로 / 특정 디렉토리를 제출하여 JMP가 MATLAB 함수를 호출 할 수 있도록 어떻게 포맷합니까?
감사,
나단
또한 매번 디렉토리를 변경하는 대신 모든 MATLAB 함수를 호출 할 수 있도록 JMP 스크립트에 경로를 추가하는 방법은 무엇입니까?
입력 한 것이 이상합니다
MATLAB 제출 ( "cd '\\ las-cifs01 \ myfilename"); // cd REPLACE 줄 대신
// MATLAB 제출 ( "cd 'REPLACE'");
cd '\\ las-cifs01 \ myfilename \ REPLACE에서 폴더를 찾습니다.
REPLACE 폴더로 이동한다는 것을 구체적으로 설명하지 않았습니다.