有没有办法从Notepad ++运行MATLAB脚本?
显然我的计算机上安装了MATLAB。我知道你可以为F5设置Notepad ++运行的路径,但是当我将这个路径设置为我的MATLAB.exe文件时,它只是打开另一个MATLAB实例。
这不是我想要的,我希望Notepad ++中的实际脚本在已经打开并运行的MATLAB实例中执行。
答案 0 :(得分:3)
我担心我现在不能在家用电脑上进行测试,所以以下只是建议您尝试。
如果您查看Notepad ++的NppExec插件,您可以看到它,当您点击F6时可以指定要运行的命令(就像在常规Notepad ++中点击F5的增强版本一样)。您还可以为其指定变量,例如当前文件的路径以及当前文件的名称。
MATLAB(至少在Windows上 - 我假设您在Windows上)通过ActiveX / COM提供API。如果您在MATLAB文档中搜索详细信息,请在外部接口 - >下进行搜索。 MATLAB COM自动化服务器。通过运行(在MATLAB中)命令enableservice('AutomationServer')
,您将设置正在运行的MATLAB实例以接收有关此API的指令。
您应该能够编写一个小脚本(可能是VBScript或类似的东西),它将把记事本++中当前文件的路径和文件名作为输入参数,然后通过COM连接到正在运行的MATLAB实例API并执行文件的内容。
设置此脚本在您点击F6时在NppExec中执行,然后它应该在MATLAB的打开实例中运行当前文件。
正如我所说,以上只是猜测,因为我现在无法测试它,但我认为它应该有效。祝你好运!
答案 1 :(得分:2)
使用NppExec附加组件并按F6键,复制粘贴以下内容并保存脚本:
NPP_SAVE
set local MATPATH=C:\Program Files\MATLAB\R2015a\bin\matlab.exe
cd "$(CURRENT_DIRECTORY)"
"$(MATPATH)" -nodisplay -nosplash -nodesktop -r "try, run('$(FILE_NAME)'),
catch me, fprintf('%s / %s\n',me.identifier,me.message), end"
然后运行(按F6;输入)。 Matlab控制台和绘图窗口仍然打开并保持打开状态。错误消息将显示在打开的Matlab命令窗口中。添加
, exit"
最后一个命令将使其退出并再次关闭。如果要使用crontabs等运行自动化应用程序,请查看Matlab外部接口参考以实现自动化。
matlab.exe -automation ...
也可以在cmd终端中使用,但是您必须自己填写路径。
答案 2 :(得分:0)
这是根据Sam的想法可用的实现。首先,以这种自动化模式执行MATLAB。
matlab.exe -automation
接下来,在NppExec插件中编译并执行以下VB。 (使用MATLAB自动化API)
'open_matlab.vb
Imports System
Module open_matlab
' connect to a opened matlab session
Sub Main()
Dim h As Object
Dim res As String
Dim matcmd As String
h = GetObject(, "Matlab.Application")
Console.WriteLine("MATLAB & Notepad++")
Console.WriteLine(" ")
'mainLoop
while True
Console.Write(">> ")
matcmd = Console.ReadLine()
' How you exit this app
if matcmd.Equals("!!") then
Exit while
End if
res=h.Execute(matcmd)
Console.WriteLine(res)
End while
End Sub
End Module
然后,在编辑器下方会出现一个类似于matlab的终端。然后,您可以在上方编码并在下方执行。键入!!
退出终端。
What it looks like
提示:请勿使用ctrl+c
来中断MATLAB命令,因为它会杀死整个过程。