2017-02-16 21 views
1

Я довольно новичок в Matlab, и хотя я мог бы просто сделать это итеративно, мне интересно, какой самый чистый способ использует возможно встроенную функциональность Matlab.Группировка данных по меткам классов в Matlab

У меня есть .mat-файл, который содержит матрицу характеристик X размером 150x4 и вектор Y ярлыка класса размером 150x1. Каков идиоматический способ в Matlab прочитать и разделить матрицу X на отдельные матрицы для каждой группы классов?

+0

Просмотреть функцию grp2idx. –

ответ

1

Использование find Функция в Matlab. Ниже приведен пример:

index = find(Y==somevalue); 
subX = X(index,:); 
0

Так что это лучший способ, которым я решил это сделать. Если кто-нибудь знает лучший способ, как какая-то встроенная функция, которая сделает все это, это будет еще лучше.

[row_size feature_size] = size(X_train); 
classes = unique(Y_train); 
grouped_data = cell(length(classes),1); 

for i=1:length(classes) 
    label_indices = find(Y_train==classes(i)); 
    grouped_data{i} = X_train(min(label_indices):max(label_indices),:); 
end