하나의 스크립트 (imagemeasure5.m)에 의해 시작된 일련의 복잡한 중첩 함수를 사용하여 MATLAB에서 두 개의 구조 배열을 만들었습니다. 이 구조체 배열은 각각 두 개의 스칼라와 두 개의 1 열, 500 행 행렬을 포함합니다. 구조 배열의 이름은 outputa와 outputb입니다. 내 목표는 개별적으로 이러한 배열의 요소를 JMP에서 변수에 저장하는 것입니다.
제가 온라인에서 찾은 다른 질문은 MATLAB이 초기화되고 스크립트가 실행되면 MATLAB Get을 사용하여 행렬 및 스칼라를 포함한 데이터 유형을 검색하고 JMP 변수에 저장하는 것을 나타냅니다. 여기에 포함 된 모든 matlab 초기화 코드가 포함 된 세 가지 방법이 있습니다.
Platform Preferences(
pathvar(MATLABROOT( "C:\Program Files\MATLAB\R2016b" )));
Names Default To Here( 1 );
gui_directory = "'C:\Users\mredford\Desktop\MATLAB Import 3.1'";
mlconn = MATLAB Connect(); // Connects to Matlab
MATLAB Init(); // Initializes Matlab
MATLAB Submit( "clc,clear all,close all,imtool close all" );
MATLAB Submit( "cd " || gui_directory );
Try( MATLAB Send( ::jmp_previous_path ), show("Previous Image Path Not Found") );
MATLAB Submit( "imagemeasure5" );
scalefactorone = MATLAB Get( outputa.Xs); //trying to reference using structure array
scalefactortwo = MATLAB Get(pixmermm); // attempting to reference using a simple saved scalar variable
scalefactorthree = MATLAB Get("pixpermm"); //trying quotes since some sources said to 그러나 어떤 이유로 MATLAB에서 간단한 명명 된 스칼라 또는 구조 배열 또는 다른 일반 MATLAB 변수를 참조하는지 여부에 관계없이 Matlab Get ()의 출력은 항상 1입니다. MATLAB 데이터를 파일로 저장하고 대신 가져올 수는 있지만이 프로그램은 과도하게 보이는 수백 번 실행되기 때문에 알 수 있습니다.
스크립트가 실행 중이고 MATLAB의 작업 공간에 변수를 저장하는 것과 관련하여 연결에 문제가 있다고 생각하지 않습니다. 나는 왜이 구문이 다른 모든 사람들에게나 옳지 않은지, 왜 내가 잘못 가고 있는지를 알 수 없다.
이 시점에서 실제로 어떻게 신경 쓰지는 않습니다. 추가 분석을 위해 JMP에서 이러한 변수의 자동 저장을 스크립팅하는 좋은 방법이 필요합니다.
감사!
관심있는 사람이 있으면 JMP 기술 지원부에 연락을하고 다음 단계에 따라 문제를 해결했습니다.
1. 개별적으로 구조 배열 구성 요소를 변수로 matlab에 저장하고 JMP로 내보내는 (내가 시도한)
2. 환경 변수와 약간 다른 구문 사용 :
Set Environment Variable("MATLABROOT","C:\Program Files\MATLAB\R2016a");
//helps locate matlab
MLroot = Get Environment Variable( "MATLABROOT" );
MATLAB Submit("\[imagemeasure5]\"); //submits measurement script삼. 이전 버전의 matlab로 전환하기