2017-01-13 2 views
0

Хорошо, я использую следующий код для перемешивания строк в MxN матрицы называется data:Matlab - Получение подматрицы

newData = data(randperm(size(data, 1)), :); 

До сих пор так хорошо, что мне сейчас нужно, чтобы сохранить первые K строки. Конечно, я могу это сделать:

newData = data(randperm(size(data, 1)), :); 
newData = newData(1:K, :); 

Но я пытаюсь сделать это (только из любопытства) только в одной строке. Что я пробовал:

newData = data(randperm(size(data, 1)), :)(1:K, :); 

Ну, это явно не удалось. Я знаю, что это не важно и, вероятно, глупый вопрос, но кто-нибудь знает способ сделать это в одной строке?

ответ

1

Вы произвольно переставляете свою матрицу, а затем занимаете верхние K строк. Вместо этого, просто выберите K случайные строки:

newData = data(randperm(size(data, 1), K), :); 

Второй аргумент randperm говорит выбрать K значения из 1:size(data, 1).

+0

Проще, чем я думал. Спасибо !! – DimChtz

+0

Выполнение этого способа также имеет то преимущество, что промежуточной переменной нет, поэтому вы сохраняете память. – craigim

Смежные вопросы