首页 > 解决方案 > Matlab中未定义的函数'head'

问题描述

我遇到了一个奇怪的问题。我在运行代码时收到此错误:

'table' 类型的输入参数的未定义函数 'head'。

filename = 'C:\\Users\\farazpc.ir\\Downloads\\Telegram 
Desktop\\MainDataset.csv';
m = readtable(filename);
h = head(m,500);

虽然我已经检查了ver哪些命令并且我有这个功能,并且我试图在 Matlab 的 Home 中为这个方法设置一个路径,然后设置路径部分。我按照此链接中的说明进行操作:

https://www.mathworks.com/help/matlab/matlab_prog/calling-functions.html

这是 head 方法的路径:

 which head

 H:\signal matlab\toolbox\matlab\bigdata\@tall\head.m  % tall method

我的 Matlab 版本是 2016b。我真的很困惑,需要帮助。提前致谢。

标签: matlabtoolboxundefined-function

解决方案


您期望的函数是表格方法,在 MATLAB R2016b 中引入(如文档页面head底部所述)。

我的猜测是您使用的 MATLAB 版本早于 R2016b。

在所有工具箱中,实际上有 4 个头函数(截至 R2017b),您可以使用-all参数 for获取列出的可用函数which

>> which head -all
C:\Program Files\MATLAB\R2017b\toolbox\matlab\bigdata\@tall\head.m              % tall method
C:\Program Files\MATLAB\R2017b\toolbox\matlab\datatypes\@tabular\head.m         % tabular method
C:\Program Files\MATLAB\R2017b\toolbox\distcomp\parallel\@codistributed\head.m  % codistributed method
C:\Program Files\MATLAB\R2017b\toolbox\distcomp\gpu\@gpuArray\head.m            % gpuArray method

因为您没有表格方法,所以没有head为输入类型定义函数table- 仅适用于 tall 数组数据类型(或您拥有工具箱的任何其他内容)。


解决方法

一个快速的解决方法是只使用索引

h = m( 1:500, : ); % Get first 500 rows of m, for all columns

如果您的表可能没有足够的行,请添加一些保护:

h = m( 1:min(500,size(h,1)), : ); % Get first 500 rows (or all rows if <500)

无论如何,这基本上就是所需的head功能......


按照本网站上MATLAB 标记 wiki(或标记信息)的指示,请始终指定您使用的发行版本,它有助于诊断与此完全相同的问题!


推荐阅读