在matlab中,M脚本文件和M函数文件的主要区别是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在matlab中,M脚本文件和M函数文件的主要区别是啥?相关的知识,希望对你有一定的参考价值。

M文件大致可以理解为由一系列的语句组成的相对独立的一个运行体。分为M脚本文件与M函数文件。
M脚本文件没有参数传递功能,但M函数文件有此功能。
M函数文件的格式有严格规定,它必须以“ function ”开头,其格式如下:

Function 输出变量=函数名称(输入变量)
语句;
end;

当函数输入变量为向量输入(多输入)时,输入形式为[x1,x2,x3...]的一元向量形式;输出同理。
M函数文件的命名必须是其函数名,不可改变。

M脚本文件则为完成一固定功能的模块,其运行时产生的变量均为全局变量,区别于M函数的局部变量,并且没有参数传递。

函数文件与命令文件的主要区别在于 :
1.函数文件一般都要带参数 , 都要有返回结果 , 而命令文件没有参数与返回结果
2.函数文件的变量是局部变量 , 运行期间有效 , 运行完毕就自动被清除 , 而命令文件的变量是全局变量 , 执 行完毕后仍被保存在内存中
3.函数文件要定义函数名 , 且保存该函数文件的文件名必须是函数名 .m 。M 函数文件可以有多个因变量和多 个自变量 , 当有多个因变量时用[ ] 括起来。
参考技术A 外面看不出来, 里面有函数定义的是函数文件, 没有函数定义的就是脚本文件。 参考技术B 脚步文件没有function函数定义

如何在后台重复运行 Matlab .m 文件?

【中文标题】如何在后台重复运行 Matlab .m 文件?【英文标题】:How can I run Matlab .m file repetitive in background? 【发布时间】:2020-01-12 08:52:16 【问题描述】:

我有一个用 MATLAB 编写的项目。它有像Main.m 这样的主文件,我想在后台每隔1 秒 重复运行Main.m。 我不想从 MATLAB 中看到任何显示和打开的窗口。 我该怎么做?

【问题讨论】:

【参考方案1】:

有两个步骤可以实现这一点。首先编写一些 m 脚本,每 1 秒调用一次您的 Main 函数。您可以 use a loop like this one. 通过 toc 获取时间很重要,以防您的主要功能需要一些时间来计算。另一种选择是timers,它可以避免任何时间漂移(循环通常略高于 1s,计时器平均为 1s)。

一旦您的 MATLAB 知道该做什么,问题就是由谁来启动它。有-batch 选项:

以非交互方式执行 MATLAB 脚本、语句或函数。 MATLAB:

在没有桌面的情况下启动 不显示启动画面 执行语句 禁用对首选项的更改 禁用工具箱缓存 将文本记录到标准输出和标准错误 不显示对话框

如果脚本成功执行,则自动退出,退出代码为 0。 否则,MATLAB 以非零退出代码终止。

语句是用双引号括起来的 MATLAB 代码。如果 statement 是 MATLAB 函数或脚本的名称,不要指定 文件扩展名。任何必需的文件都必须在 MATLAB 搜索中 路径或启动文件夹中。

在非交互式脚本或命令行中使用 -batch 选项 工作流程。不要将此选项与 -r 选项一起使用。

要测试 MATLAB 会话是否以批处理模式运行,请调用 batchStartupOptionUsed 函数。

示例:-batch "myscript"

这意味着 MATLAB 不会打开任何窗口,而是在调用命令行中看到任何输出。它在 LINUX 上的样子:

x@y ~ $ matlab -batch "1+1"

ans =

     2

【讨论】:

【参考方案2】:

假设Main.m 中有一个***函数,您希望每 1 秒执行一次,一种可能性是启动一个 Matlab 实例并创建另一个脚本,在永远循环中调用您的函数,并使用 1第二次暂停(确保这个其他脚本在 PATH 中有 Main.m 文件,以便它可以看到它)

函数 run_main_forever() 虽然是真的 我的函数() 暂停(1) 结尾 结束

你可以让一个 .bat 文件在后台启动 matlab 并像这样运行脚本:

matlab -nodesktop -nosplash -r "cd('C:\Path\To\'); run_main_forever();"

有关在没有桌面的情况下启动 MATLAB 的更多详细信息,请参阅此链接:https://blogs.mathworks.com/community/2010/02/22/launching-matlab-without-the-desktop/

【讨论】:

这个解决方案不适合我的目的,因为我不想打开 Matlab,我想在后台运行 Matlab(例如双击包含命令行的 .bat 文件) 我更新了我的答案,包括从 .bat 文件启动脚本 您可能使用 Matlab 计时器而不是暂停/for 循环来获得更好的计时规律。 mathworks.com/help/matlab/matlab_prog/… pause 不保证在时间方面是准确的。不过,我认为您使用帮助脚本的方法是正确的。 Matlab 启动速度太慢,无法接近每秒启动一次。

以上是关于在matlab中,M脚本文件和M函数文件的主要区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

matlab,简述脚本M文件和函数M文件的区别?

什么是脚本文件?MATLAB中的M文件脚本文件是什么意思?

1.基础知识 --Matlab 函数使用总结

如何在matlab中创建m文件

在 MATLAB 中,我可以在同一个文件中包含脚本和函数定义吗?

matlab中一个m文件怎么调用另一个m文件的函数