在Matlab中定位行的索引

在Matlab中定位行的索引,matlab,Matlab,我已经在matlab的一个结构文件中存储了一个数据库和相应的标签文件。为了将数据库矩阵从结构读入矩阵,我使用以下matlab命令: train_data_matrix = (cat(1, train_data.f2)); 列车数据结构的大小为883。但是,由于最后有一些空样本,train\u data\u矩阵的大小为833。我的问题是我对所有样本都有注释。因此注释的大小为883x1如何从注释向量中删除数据库矩阵中的空行?您可以使用isempty检查缺少的值并删除它们 % Store data

我已经在matlab的一个结构文件中存储了一个数据库和相应的标签文件。为了将数据库矩阵从结构读入矩阵,我使用以下matlab命令:

train_data_matrix = (cat(1, train_data.f2));

列车数据结构的大小为883。但是,由于最后有一些空样本,
train\u data\u矩阵
的大小为
833
。我的问题是我对所有样本都有注释。因此注释的大小为
883x1
如何从注释向量中删除数据库矩阵中的空行?

您可以使用
isempty
检查缺少的值并删除它们

% Store data in a cell array (preserves missing values)
tmp = {train_data.f2};

% Create a logical array that is TRUE where the missing values are
toremove = cellfun(@isempty, tmp);

% Convert to an array (removes missing values as you've mentioned)
data = cat(1, tmp{:});

% Create an array of annotations (after removing the ones that are missing data)
annotations = cat(1, train_data(~toremove).annotations);

您可以使用
isempty
检查缺少的值并将其删除

% Store data in a cell array (preserves missing values)
tmp = {train_data.f2};

% Create a logical array that is TRUE where the missing values are
toremove = cellfun(@isempty, tmp);

% Convert to an array (removes missing values as you've mentioned)
data = cat(1, tmp{:});

% Create an array of annotations (after removing the ones that are missing data)
annotations = cat(1, train_data(~toremove).annotations);

变量train_data.f2不是结构思想。我可以在不使用cellfun的情况下将索引点删除吗?@JoseRamon
tmp
是一个单元格数组(每个元素包含每个
struct
f2
值),这就是我使用
cellun
的原因。您是否遇到错误?变量train_data.f2不是结构思想。我可以在不使用cellfun的情况下将索引点删除吗?@JoseRamon
tmp
是一个单元格数组(每个元素包含每个
struct
f2
值),这就是我使用
cellun
的原因。你有错误吗?