存在包含1和0个元素的对称矩阵A,正如我们在这样的矩阵中所知,我们有A(i,j)= A(j,i)。我想在matlab中以0对称的方式随机替换1个元素的精确分数。我的意思是如果随机选择元素A(i,j)替换为0,则元素A(j,i)将被同时替换为0。那么有什么方法可以在matlab中做这样的事情吗?
答案 0 :(得分:0)
假设它是一个mxn矩阵(m = n)并且你想要替换k个元素,你可以这样做:
%Find the indeces for the elements equal to 1
[onesX, onesY] = find(A == 1);
numOnesX = size(onesX,1);
numOnesY = size(onesY,1); % numOnesX and numOnesY should be the same
%Generate a random set of elements to be replaced
xRep = randperm(numOnesX);
xRep = onesX(xRep(1:k));
yRep = randperm(numOnesY);
yRep = onesY(yRep(1:k));
%Do the replacement
A(xRep, yRep) = ~A(xRep, yRep);
A(yRep, xRep) = ~A(yRep, xRep);
答案 1 :(得分:0)
如果adj是包含1和0的矩阵,则创建对称矩阵:
adj = adj + adj';
adj(adj>1)=1;
使用此矩阵索引替换