循环中的matlab子矩阵

时间:2013-02-19 23:31:34

标签: matlab for-loop submatrix

我有一个118800x6矩阵。第一列包含1到99之间的值(每个值有1200行)。现在我需要为每个99值创建一个包含900个随机行(所有前一列;从原始矩阵中提取行)的新矩阵。我尝试使用for循环,但这意味着我必须编写99行代码...有更快的方法吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

假设你的矩阵被称为M

for num = 1:99
    %Extract only rows that have the correct number in column one
    subsample = M(M(1, :) == num, :);
    %Randomly change the order of the rows of this subsample
    shuffledsubsample = subsample(randperm(1200), :);
    %Only keep the first 900 rows
    final(:,:,num) = shuffledsubsample(1:900, :);
end