How to issue and execute commands in the Command Window of another MATLAB instance

28 ビュー (過去 30 日間)
Jon
Jon 2024 年 5 月 13 日
コメント済み: Jon 2024 年 6 月 3 日
I would like to have two instances of MATLAB running on my computer with some interaction between the two instances.
I am running MATLAB (R2024a) Update 2 on a Windows 10 computer.
Specifically I would like to:
  1. Open a first instance of MATLAB in the usual way from the Window desktop
  2. From the first instance of MATLAB open a second instance of MATLAB (ideally without another user interface opening up)
  3. From the first instance of MATLAB tell the second instance of MATLAB to run a .m file
  4. Run some code on the first instance of MATLAB
  5. From the first instance of MATLAB tell the second instance of MATLABt to run another .m file
  6. From the first instance of MATLAB close the second instance of MATLAB e.g. run the quit command
I have seen in other posts that this could be done using either a com server or .Net. I looked into the com server approach, but will have difficulties with that, because in our corporate installation, it is difficult to obtain needed administrative privileges.I am therefore most interested in the .Net approach. Also, I do not have the Parallel Processing Toolbox, so I can not use approaches that use that.
Following from some other related postings, e.g. ( https://www.mathworks.com/matlabcentral/answers/586706-how-to-redirect-standard-input-and-standard-output-using-net-system-diagnostics-process?s_tid=prof_contriblnk) I tried doing running this Hello World example from the first instance of MATLAB
NET.addAssembly('System')
matlabProcess = System.Diagnostics.Process()
matlabProcess.StartInfo.FileName = 'matlab'
matlabProcess.StartInfo.Arguments = '-nosplash'
matlabProcess.StartInfo.UseShellExecute = false;
matlabProcess.StartInfo.RedirectStandardInput = true;
matlabProcess.StartInfo.RedirectStandardOutput = true;
matlabProcess.Start();
matlabProcess.StandardInput.WriteLine("disp('Hello from MATLAB')")
This sucessfully opens the second MATLAB instance, but no commands (e.g. disp('Hello from MATLAB') appear in the command window of the second instance.
I know that there are simpler ways to launch a second instance of MATLAB and have it run just one command, however I need to start some processes running on the second instance, use the results of these in the first instance, and then thave the second instance run some code to gracefully stop some processes and shut down.
I posted an earlier version of this inquiry as a comment to the related question https://www.mathworks.com/matlabcentral/answers/1435767-how-to-opening-1-instance-of-matlab-from-matlab-but-accessing-it-multiple-times, but am now posting it here as its own question, along with some specific code that I tried, so it will reach others that might not be following that older question.
Thanks for any suggestions you can provide.
Best Wishes,
Jon

回答 (1 件)

Shubham
Shubham 2024 年 5 月 24 日
編集済み: Shubham 2024 年 5 月 24 日
Hey Jon,
You may find the following MATLAB Answers cases relevant for using the .NET interface:
Essentially you are trying to spawn a MATLAB process and then control it. It seems you are explicitely implementing the parallel computing without the toolbox. In such a case you may try the "Parallel Matlab Interface" available on file exchange:
The following MATLAB Answer case also discusses about parallelization without the parallel computing toolbox:
MATLAB also provides interfaces for other languages such as C/C++. You may try following your workflow by using such external interfaces and package them as MEX files.
Lastly, you may try to incorporate IPC between two instances of MATLAB for sharing results of one instance to another. Have a look at the following resources which could prove helpfult to you:
I hope this helps!
  1 件のコメント
Jon
Jon 2024 年 6 月 3 日
Sorry, I just saw your answer. Thanks for researching this for me. I had found some of those, but could not find an exact fit to what I was doing. I will look at the all the references that you have suggested again though to see if there is something I can use for my situation.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

製品


リリース

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by