한다고 가정;
위치에 m 파일이 있습니다.
C:\M1\M2\M3\mfile.m
그리고 matlab의 exe 파일은 다음 위치에 있습니다.
C:\E1\E2\E3\matlab.exe
예를 들어 .bat 파일 내에서 명령 줄에서 Matlab으로이 m- 파일을 실행하고 싶습니다. 어떻게해야하나요? 방법이 있나요?
답변
다음과 같은 명령은 m 파일을 성공적으로 실행합니다.
"C:\<a long path here>\matlab.exe" -nodisplay -nosplash -nodesktop -r "run('C:\<a long path here>\mfile.m'); exit;"
답변
이전 답변에서 언급되지 않은 한 가지 중요한 점은 명시 적으로 표시하지 않으면 matlab 인터프리터가 열려 있다는 것입니다. 따라서 @hkBattousai의 대답에 다음 exit
명령 을 추가합니다 .
"C:\<a long path here>\matlab.exe" -nodisplay -nosplash -nodesktop -r "run('C:\<a long path here>\mfile.m');exit;"
답변
스크립트의 오류를 정상적으로 처리하기 위해 대신 사용하는 방법은 다음과 같습니다.
"C:\<a long path here>\matlab.exe" -nodisplay -nosplash -nodesktop -r "try, run('C:\<a long path here>\mfile.m'), catch, exit, end, exit"
더 자세한 정보를 원하는 경우 :
"C:\<a long path here>\matlab.exe" -nodisplay -nosplash -nodesktop -r "try, run('C:\<a long path here>\mfile.m'), catch me, fprintf('%s / %s\n',me.identifier,me.message), end, exit"
여기서 원본 참조를 찾았습니다 . 이제 원래 링크가 없어 졌으므로 다음은 현재 여전히 살아있는 대체 새 리더에 대한 링크입니다.
답변
Linux에서 동일한 작업을 수행 할 수 있으며 실제로 다음과 같은 사용자 지정 오류 코드를 셸로 다시 보낼 수 있습니다.
#!/bin/bash
matlab -nodisplay -nojvm -nosplash -nodesktop -r \
"try, run('/foo/bar/my_script.m'), catch, exit(1), end, exit(0);"
echo "matlab exit code: $?"
matlab exit code: 1
스크립트에서 예외가 발생 하면 인쇄 하고 matlab exit code: 0
그렇지 않으면 인쇄 합니다 .
답변
단계는 다음과 같습니다.
- 명령 줄을 시작합니다.
- .m 파일이 포함 된 폴더를 입력하십시오.
cd C:\M1\M2\M3
- 다음을 실행하십시오.
C:\E1\E2\E3\matlab.exe -r mfile
Windows 시스템은 MATLAB이 .m 파일을 검색 할 위치로 현재 폴더 를 사용 하며,이 -r
옵션은 시작되는 즉시 주어진 .m 파일을 시작하려고합니다.
답변
cat 1.m | matlab -nodesktop -nosplash
그리고 우분투를 사용합니다
답변
말라 트 덕분입니다. 귀하의 의견이 도움이되었습니다. 그러나 전체 오류 메시지를 반환하고 MATLAB 콘솔에 인쇄 하는 MExeption
메서드 getReport()
를 찾았 으므로 try-catch 블록을 추가하고 싶습니다 .
또한이 컴파일은 matlab을 호출하는 배치 스크립트의 일부이므로 파일 이름을 인쇄했습니다.
try
some_code
...
catch message
display(['ERROR in file: ' message.stack.file])
display(['ERROR: ' getReport(message)])
end;
레거시 코드 생성 방법에 전달 된 잘못된 모델 이름의 경우 출력은 다음과 같습니다.
ERROR in file: C:\..\..\..
ERROR: Undefined function or variable 'modelname'.
Error in sub-m-file (line 63)
legacy_code( 'slblock_generate', specs, modelname);
Error in m-file (line 11)
sub-m-file
Error in run (line 63)
evalin('caller', [script ';']);
마지막으로 Windows 명령 프롬프트 창에 출력을 표시하려면 matlab 콘솔을 -logfile logfile.txt
(추가적으로 사용 -wait
) 파일에 기록 하고 배치 명령을 호출하십시오.type logfile.txt