2013-05-02 81 views

回答

3

对于reading and writing excel files看到xlsreadxlswrite

randomly shuffle一个矩阵的行:

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

感谢丹的提示。 恐怕这可能无法解决我的需求。每个单元格内的单个数据不能修改,它必须是相同的。洗牌需要连续进行。所有行(1到170000)都需要随机填充。 – mmenvo 2013-05-02 06:22:20

+0

@MustafaMamun我不知道我是否按照你的问题。此代码将混洗所有行,而不是在不更改任何数据的情况下对列进行洗牌 – Dan 2013-05-02 06:31:04

+0

@ Dan:当行数很多时,我遇到了matlab错误。例如:我使用了314258行。并且matlab显示错误>“程序所允许的最大变量大小被超出”。此外,matlab还显示魔术和meshgrid错误。我已经使用了excell插件来完成这个工作,但是我不得不将数据集分成两部分,随机随机混合行和后期处理需要很长时间。 现在该怎么做这种matlab erros?你可以帮我吗。 – mmenvo 2013-05-03 09:37:03

1

正如@丹所说,你可以使用xlsreadxlswrite的Excel文件的操作。您可以使用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