2016-05-11 9 views
3

У меня есть последовательностькак выбрать каждую строку для различных операций из матрицы

A = 1:5 

тогда я его случайная перестановка от

B = perms(A) 
C = B(randperm(size(B,1)), :) 

потом взял образец 5 последовательностей случайным образом, как следует

sample = C(1:5,1:4) 

затем я взял случайную последовательность из образца, как следует

randomRow = sample(randi(size(sample,1)),:) 

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

ответ

4

вы можете использовать следующий код:

For i=randperm(size(sample,1)) 
    Rand_row=sample(i,:) 
    %// operate on Rand_row 
End 
+0

yes Dan, this есть обобщенная форма, спасибо – sarah

3

Почему бы просто не использовать тот же трюк, который вы использовали ранее с randperm, чтобы перетасовать строки sample, а затем просто перебирать их?

sample_shuffled = sample(randperm(5),:) 
for s = 1:5 
    randomRow = sample_shuffled(s,:) 
    %// Operate on randomRow 
end 
+0

эй Dan ,, Большое спасибо, да это работает ,, – sarah

+0

Дэн, как поместить результат каждой операции строки в каком-то другом месте, так и в end i может видеть вывод каждой операции, которую я выполняю в каждой строке. ? – sarah

+0

в цикле делают что-то вроде «выходов (ы) = ...», но не забудьте заранее выделить память для «выходов» перед вашим циклом, чтобы избежать увеличения переменной в цикле. – Dan

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

  • Нет связанных вопросов^_^