从Notepad ++运行MATLAB脚本

时间:2014-06-02 10:52:11

标签: matlab notepad++

有没有办法从Notepad ++运行MATLAB脚本?

显然我的计算机上安装了MATLAB。我知道你可以为F5设置Notepad ++运行的路径,但是当我将这个路径设置为我的MATLAB.exe文件时,它只是打开另一个MATLAB实例。

这不是我想要的,我希望Notepad ++中的实际脚本在已经打开并运行的MATLAB实例中执行。

3 个答案:

答案 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命令,因为它会杀死整个过程。