matlab如何将已有矩阵的每行元素重新随机排列

现有一个50行300列的矩阵,如何利用matlab将每一行的300个元素重新随机排列呢?要求不改变元素值的大小,只是改变元素的顺序,本人刚开始学习matlab,望大家不吝赐教!

使用randperm函数生成随机位置,然后将原矩阵进行修改,程序如下:

 

简单的实验结果如下:

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-27
假设行数或列数为n
vector = randperm(n);
vector是从1到n的整数随机排列的向量
按照vector里各个元素的值重新排列行列向量就可以了
假设待排列矩阵为M,排列后的矩阵为A
按列随机排列
A = zeros(size(M));
for i=1:n
A(:,i)=M(:,vector(i));
end
第2个回答  推荐于2017-12-16
% matrix_In是输入矩阵
% matrix_Out是输出矩阵
function [matrix_Out] = Randmatrix(matrix_In)
[line column] = size(matrix_In);
matrix_Out=zeros(line,column);
for i=1:line
seed=randperm(column);
matrix_Out(i,:)= matrix_In(i,seed);
end
end本回答被网友采纳
相似回答