我有一个名为“featureMatrix”的矩阵。使用size(featureMatrix)
结果是:11843 720.我想使用randperm来混洗这个矩阵的内容。首先,我使用rng(1)
选择种子。然后我使用randperm:featureMatrixRnd = featureMatrix(randperm(length(featureMatrix))');
。但它没有奏效。事实上,如果我写size(featureMatrixRnd)
,我获得11843 1,而不是11843 720.为什么?
答案 0 :(得分:4)
因为您使用了length
,它选择了最长的维度。首先使用numel
代替length
来获取所有元素,然后将reshape
恢复为原始大小:
OrgSize = size(featureMatrix);
featureMatrixRnd = randperm(numel(featureMatrix));
out = reshape(featureMatrix(featureMatrixRnd),OrgSize);
答案 1 :(得分:2)
此答案与Adriaan's类似,但不需要重新塑造:
featureMatrix(:) = featureMatrix(randperm(numel(featureMatrix)));
答案 2 :(得分:-3)
这是最好的解决方案:
rng(1);
idx = randperm(size(featureMatrix,1));
outfeatureMatrixRnd = featureMatrix(idx,:);
使用
OrgSize = size(featureMatrix);
featureMatrixRnd = randperm(numel(featureMatrix));
out = reshape(featureMatrix(featureMatrixRnd),OrgSize);
不好,因为我不需要独立地改变每一个想法