2017-01-13 1 views
0

좋아 얻기 나는 data라는 MxN 행렬의 행을 임의 재생으로 다음 코드를 사용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에 두 번째 인수는 1:size(data, 1)에서 K 값을 선택했다.

+0

내가 생각했던 것보다 쉽습니다. 고맙습니다 !! – DimChtz

+0

이렇게하면 중간 변수가 없으므로 메모리를 절약 할 수 있다는 이점이 있습니다. – craigim