您可能无法在 MATLAB 中找到很多有关表格的信息,因为它们是在不久前的 R2013a 版本中引入的,那个。所以,关于你的问题:让我们首先创建一个示例表:
% Create a sample table
col1 = {'ZMX01'; 'MX002'; 'US001'};
col2 = {5;7;3};
T = table(col1, col2);
T =
col1 col2
_______ ____
'ZMX01' [5]
'MX002' [7]
'US001' [3]
现在,MATLAB 提供了rowfun 函数以将任何函数应用于表中的每一行。默认情况下,您调用的函数必须能够处理表的 所有 列。
要将rowfun 仅应用于一列,您可以使用'InputVariables' 参数,该参数允许您指定列的编号(例如,第二列的2)或列的名称(例如'myColumnName' )。
然后,您可以将'OutputFormat' 设置为'uniform' 以获取数组而不是新表作为输出。
在您的情况下,您需要在 'col1' 列上使用 strfind。 strfind 的返回值要么是一个空数组(如果未找到 'MX'),要么是找到 'MX' 的所有索引的数组。
% Apply rowfun
idx = rowfun(@(x)strfind(x,'MX'), T, 'InputVariables', 'col1', 'OutputFormat', 'uniform');
这个输出将是
idx =
[2]
[1]
[]
即3×1 元胞数组,'US001' 为空,其他两个输入都包含正值。要使用这些数据创建表的子集,我们可以执行以下操作:
% Create logical array, which is true for all rows to keep.
idx = ~cellfun(@isempty, idx);
% Save these rows and all columns of the table into a new table
R = T(idx,:);
最后,我们得到了结果表R:
R =
col1 col2
_______ ____
'ZMX01' [5]
'MX002' [7]