Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何调用非';t内置?_Matlab_Built In - Fatal编程技术网

Matlab 如何调用非';t内置?

Matlab 如何调用非';t内置?,matlab,built-in,Matlab,Built In,自R2013b以来一直是MATLAB中的标准函数。就我从文档中所见,table与sum、cell、struct或任何其他相比,没有什么特别之处 但是,当我尝试使用builtin('table',var1,…varN)运行该函数时,我收到一个错误消息: 使用内置程序时出错 找不到内置函数“表” 对此的进一步调查表明,它实际上不被视为一个内置函数: which('cell') built-in (C:\Program Files\MATLAB\R2014b\toolbox\matlab\dataty

自R2013b以来一直是MATLAB中的标准函数。就我从文档中所见,
table
sum
cell
struct
或任何其他相比,没有什么特别之处

但是,当我尝试使用
builtin('table',var1,…varN)
运行该函数时,我收到一个错误消息:

使用内置程序时出错

找不到内置函数“表”

对此的进一步调查表明,它实际上不被视为一个内置函数:

which('cell')
built-in (C:\Program Files\MATLAB\R2014b\toolbox\matlab\datatypes\cell)

which('table')
C:\Program Files\MATLAB\R2014b\toolbox\matlab\datatypes\@table\table.m  % table constructor
|
Not builtin
进一步调查:

which cell2mat
C:\Program Files\MATLAB\R2014b\toolbox\matlab\datatypes\cell2mat.m

which mat2cell
C:\Program Files\MATLAB\R2014b\toolbox\matlab\datatypes\mat2cell.m

which table2array
C:\Program Files\MATLAB\R2014b\toolbox\matlab\datatypes\table2array.m

which struct2cell
built-in (C:\Program Files\MATLAB\R2014b\toolbox\matlab\datatypes\@struct\struct2cell)  % struct method

which cell2struct
built-in (C:\Program Files\MATLAB\R2014b\toolbox\matlab\datatypes\@cell\cell2struct)  % cell method
因此,
单元格
是内置的,而
表格
不是内置的
cell2struct
内置,而
cell2mat
不内置

这是为什么?有没有一种简单的方法来调用MATLAB不认为是内置的重载标准函数



如果你认为“为什么”部分“太宽泛”,请忽略它,跳到问题的最后一部分

内置的
文档页面给出了明确的定义:

内置函数是MATLAB可执行文件的一部分。MATLAB不使用MATLAB语言实现这些功能。尽管大多数内置函数都有一个与之关联的.m文件,但此文件仅提供函数的文档


您可以通过以下方式找到本机函数:

allTables = which  ( '-all', 'table' )
allTables(cell2mat(strfind ( allTables, matlabroot )))

它不是完全可靠的,对于某些函数(例如sum),根文件夹中有很多…

内置程序通常是编译的,因为它们的使用频率很高,并且/或者作为
*.m
文件运行需要花费不必要的时间。以前某个地方有个技术文档,但我找不到。有意义=)但是如果他们编译
cell2struct
,编译
cell2mat
难道没有意义吗?也许吧。但与开发中经常出现的情况一样,开发团队可能有内部知识,使事情不像他们在外界看来那么简单。@Studiegriffin:,经常使用并不意味着它应该被编译。当然,它是有效的,使用
'-all'
标志并解析“MATLAB”工具箱中函数的返回单元格数组。