2017-03-07 180 views
0

我已经在matlab中的一个结构文件中存储了一个数据库和相应的标签文件。为了读取从结构我的数据库矩阵到矩阵我使用以下MATLAB命令:在Matlab中找到行的索引

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

的train_data结构的大小是883.但是因为有中端的大小一些空样本train_data_matrix833。我的问题是我有所有样品的注释。因此注释的大小为883x1如何从注释向量中移除数据库矩阵中为空的行?

回答

3

您可以使用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); 
+0

变量train_data.f2不是一个结构的想法。我是否可以在不使用cellfun的情况下点击索引进行删除? –

+0

@JoseRamon'tmp'虽然是一个单元格数组(每个元素包含每个“struct”的f2值),这就是我使用'cellun'的原因。你有错误吗? – Suever

+0

非常感谢,它的作品就像一个魅力! –