Matlab 如何调用非';t内置?
自R2013b以来一直是MATLAB中的标准函数。就我从文档中所见,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
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”工具箱中函数的返回单元格数组。