2013-05-02 3 views
0

내 데이터 행을 현명하게 섞어 놓고 싶습니다 (하나의 고유 한 행에 셔플이 없으며 동일하게 유지되어야합니다 - 단일 행의 모든 ​​개별 셀은 변경할 수 없음). 엑셀 파일에있는 행 수는 약 170000입니다.Matlab에서 Excel 파일에 저장된 큰 데이터를 임의로 셔플하는 방법은 무엇입니까?

필요한 것은 모든 행을 무작위로 섞는 것입니다. mat-lab 명령으로 어떻게이 작업을 수행 할 수 있습니까? 코드 또는 알고리즘 제발! reading and writing excel files를 들어

enter image description here

답변

3

xlsreadxlswrite 참조하십시오.

는 행렬의 행을 randomly shuffle하려면 @Dan에서 언급 한 바와 같이, 당신은 Excel 파일의 조작을 위해 xlsreadxlswrite을 사용할 수 있습니다

M = magic(5); 
Mshuffled = M(randperm(size(M, 1)), :) 
+0

감사 단, 팁합니다. 이것이 내 필요를 해결하지 못할 수도 있습니다. 각 셀 내부의 개별 데이터는 수정할 수 없으며 동일해야합니다. 셔플 링은 연속적으로 필요합니다. 모든 행 (1에서 170000)은 무작위로 겪어야합니다. – mmenvo

+0

@MustafaMamun 귀하의 문제를 잘 모르겠습니다. 이 코드는 데이터를 변경하지 않고 모든 행을 섞어서 열을 뒤섞습니다. – Dan

+0

@ Dan : 행 수가 많으면 matlab 오류가 발생합니다. 예 : 314258 개의 행을 사용했습니다. 그리고 matlab에 "프로그램에서 허용하는 최대 변수 크기가 초과되었습니다"라는 오류가 표시됩니다. 또한 matlab은 매직 및 메쉬 그리드 오류도 표시합니다. 엑셀 추가 기능을이 작업에 사용했지만 데이터 세트를 두 개로 분할해야했으며 무작위로 행을 뒤섞어 처리하는 데 많은 시간이 걸립니다. 이 종류의 matlab erros로 지금해야 할 일은 무엇입니까? 저 좀 도와 주 시겠어요. – mmenvo

1

. randperm을 사용하면 효과적으로 셔플을 수행 할 수 있지만,이를 달성하는 또 다른 방법은 randsample 명령을 사용하는 것입니다. 예를 들어

:

>> A = randint (5,2,[1,10]) 

A = 

    2  2 
    10  5 
    10 10 
    5  8 
    9 10 

>> A(randsample(1:size(A,1),size(A,1)),:) 

ans = 

    10  5 
    2  2 
    9 10 
    10 10 
    5  8