有一个包含 1 和 0 元素的对称矩阵 A,正如我们所知,在这样的矩阵中我们有 A(i,j)=A(j,i)。我想在matlab中用0对称地随机替换1个元素的精确分数。我的意思是如果随机选择元素 A(i,j) 替换为 0,则元素 A(j,i) 将同时替换为 0。那么有没有办法在matlab中做这样的事情?
问问题
96 次
2 回答
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);
于 2013-08-16T23:12:34.977 回答
0
如果 adj 是包含 1 和 0 的矩阵,则创建对称矩阵:
adj = adj + adj';
adj(adj>1)=1;
使用此矩阵来索引替换
于 2013-08-17T00:28:00.453 回答