Индексы матрицы

Кажется, я не могу получить индексы UnseenTestdata и Testdata из полных данных в приведенном ниже примере, может ли кто-нибудь помочь?

pointsToPick = 49402;  %# Numbers to pick
rVec = randperm(494021);   %# Random permutation of datapoint indices (N=494021 in this case)  

UnseenTestdata = fulldata(rVec(1:pointsToPick),:); %# Random sample
Testdata = fulldata(rVec((pointsToPick+1):length(rVec)),:);

Мне нужен список номеров строк из полных данных, из которых были получены unseentestdata, и то же самое с тестовыми данными. Это относится к предыдущему вопросу здесь без индексов I не могу понять, какие метки классов идут с unseentestdata и testdata.


person G Gr    schedule 17.11.2012    source источник
comment
возможный дубликат stackoverflow.com/questions/6209904 /найти заданную строку в матрице   -  person Barney Szabolcs    schedule 17.11.2012
comment
Разве rVec(1:pointsToPick) уже не является списком номеров строк из fulldata, из которых UnseenTestdata произошло? (то же самое для rVec((pointsToPick+1):length(rVec)) и Testdata)   -  person Tobold    schedule 17.11.2012
comment
@Tobold Да, но пользователь сказал мне, что ему нужен другой метод. Мы обсуждали это в чате по его предыдущему вопросу.   -  person Barney Szabolcs    schedule 17.11.2012
comment
Содержит ли fulldata дубликаты? Это может быть причиной повторяющихся строк с использованием ответа Варнавы ниже. Каков будет ваш ожидаемый результат в случае дубликатов?   -  person Tobold    schedule 17.11.2012


Ответы (1)


Если вы не хотите использовать rVec(1:pointsToPick), который уже хранит индексы, как сказал @Tobold, другой способ -

[~,indx_uns]=ismember(UnseenTestdata, fulldata, 'rows');
[~,indx_test]=ismember(Testdata, fulldata, 'rows');

Обратите внимание, что первый возвращаемый параметр не используется (поэтому он помечен ~).
indx_uns(n) дает соответствующую строку полных данных n-й строке данных UnseenTestdata.

Кроме того, здесь есть ссылка на соответствующий вопрос SO.

Для получения дополнительной помощи по ismember: см. эту ссылку

person Barney Szabolcs    schedule 17.11.2012
comment
Я думаю, вы забыли [~,indx_uns], просто набрали ismember. Это связано с тем, что ismember возвращает два значения: членство === повторяющиеся в вашем случае и индексы. обновил ответ - person Barney Szabolcs; 17.11.2012
comment
как вы используете rVec(1:pointsToPick) для проверки индекса невидимых и тестовых данных? - person G Gr; 17.11.2012
comment
посмотрите комментарий @Tobold;) - person Barney Szabolcs; 17.11.2012
comment
Я думаю, что это должна быть какая-то другая проблема. Этот вопрос не касается файлов. - person Barney Szabolcs; 17.11.2012
comment
тьфу-тьфу-тьфу, я пытался открыть rVec не indx, когда я это делал, и по какой-то причине он вылетает. Теперь, когда я делаю indX = rVec(1:pointsToPick)'; и открыть indX все в порядке... чувак, я не должен тянуть все ночные часы! - person G Gr; 17.11.2012