我在MATLAB help(matlab -h)中看到我可以使用该-r标志来指定m要运行的-file.我注意到,当我这样做时,MATLAB似乎启动了脚本,但立即返回.脚本处理正常,但主应用程序已经返回.
有没有办法让MATLAB只在命令完成后返回?如果你从一个单独的程序中调用它,似乎等待进程比使用文件或套接字确认完成更容易.
为了说明,这是一个示例函数waitHello.m:
function waitHello
disp('Waiting...');
pause(3); %pauses 3 seconds
disp('Hello World');
quit;
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方式运行:
matlab -nosplash -nodesktop -r waitHello
Run Code Online (Sandbox Code Playgroud) 正如标题所示,我有用于隔离口语识别的 MATLAB代码,并且我希望能够将该项目与另一个用PHP构建的项目集成用于某些目的.
我以前不习惯处理这样的问题.换句话说,这是我第一次需要集成PHP和MATLAB时,所以我真的不知道从哪里开始以及如何开始.
我已经阅读了几篇文章,但我无法使其有效.
我有PHP 5.4.9,MATLAB R2012A和Windows 7. MATLAB项目文件可以在GitHub上看到.
我想以非交互方式在bash中调用matlab,并在Matlab之外使用它的结果.
例如,我有一个脚本test.m
rand(3,4)
quit
Run Code Online (Sandbox Code Playgroud)
当我在bash中执行时
$ matlab -nosplash -nodesktop -nodisplay -r test
Warning: No window system found. Java option 'MWT' ignored
< M A T L A B (R) >
Copyright 1984-2008 The MathWorks, Inc.
Version 7.7.0.471 (R2008b)
September 17, 2008
To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
ans =
0.8147 0.9134 0.2785 0.9649
0.9058 0.6324 0.5469 0.1576
0.1270 0.0975 0.9575 0.9706
Run Code Online (Sandbox Code Playgroud)
是否可以抑制Matlab的启动消息,并且只显示没有"ans ="的结果.
注意我不仅仅是针对这个例子提出一般性问题.
感谢致敬!
我们从Jenkins构建服务器启动Matlab .由于构建可能需要一些时间,因此在matlab运行时获取一些日志输出会很不错.有没有办法将文本打印到标准输出?disp,fprintf和java.lang.System.out.printline只写入matlab控制台,而不是标准输出.
使用日志文件或管道无济于事,因为Jenkins只在构建步骤中从标准输出读取.
在matlab运行时,我们如何将标准语句写入标准输出?
编辑: 我们在Windows上运行Matlab 2010b
从linux中的命令行启动matlab时,我有一种奇怪的行为.
我在linux中有一个bash脚本,它从命令行在matlab中执行一个函数,并使用C++编写的自定义函数执行其他操作,如下所示:
#!/bin/bash
# prepare input data just to be sure it has not been written by other test!
matlab2011a -nodesktop -nosplash -r "prepare_data_matlab( 'A' ); quit"
# launch C++ program
...
# prepare more data
matlab2011a -nodesktop -nosplash -r "prepare_data_matlab( 'B' ); quit"
Run Code Online (Sandbox Code Playgroud)
当脚本完成后,虽然命令有效,但我看不到我在终端写的内容.我需要到reset终端.
事实上,如果我只使用matlab启动matlab,一切正常,prepare_data_matlab( 'A' )但是当我执行带有选项的函数时问题就出现了prepare_data_matlab( 'B' ).
我逐行评论,发现问题是B调用函数的选项
dlmwrite(file_name, B, ' ');
Run Code Online (Sandbox Code Playgroud)
不用于prepare_data_matlab( 'A' ).
那么,我应该如何从命令行执行matlab以避免这种行为?该dlmwrite()功能是否存在已知错误?
我正在使用Ubuntu 12.04 64位,GNU bash,versión4.2.24 (1)-release(x86_64-pc-linux-gnu)和matlab2011a …