2017-03-07 88 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

非常感謝,它的作品就像一個魅力! –

相關問題