例: 把一个对称阵非对角元素打乱顺序,得到新的对称阵
%把一个对称阵非对角元素打乱顺序,得到新的对称阵
%构造原始对称阵C
N=5;
A=randperm(N^2);
B=reshape(A,N,N) ;
C=triu(B',0)+tril(B,-1); % 根据下三角造对称阵
%%%%%%%%%%%% C是原始对称矩阵, F是新的对称阵%%%%%%%%%%%
% 标记下三角元素在矩阵的位置为向量I
I=find(tril(ones(size(C)),-1));
% 提取所有下三角元素(不包括对角线元素)至向量E
E=C(I) ;
%打乱E 的顺序
E=E(randperm(length(E)));
F=diag(diag(C)); % 提取C的对角线,放到F,F的非对角线皆为0
F(I)=E;%打乱的元素放到F下三角
% F 的下三角映射到上三角,构成对称矩阵.
F=triu(F',0)+tril(F,-1);

另外还可以,随机打乱矩阵所有元素顺序
E=rand(4,4)
E=reshape(E(randperm(numel(E))),4,4)
网友评论