在Matlab中随机更改(损坏)矩阵值

在Matlab中随机更改(损坏)矩阵值,matlab,random,matrix,Matlab,Random,Matrix,我有如下矩阵 x1(1,:)=[0.1,0.9,0.9,0.9,0.1, 0.9,0.1,0.9,0.1,0.9, 0.9,0.9,0.1,0.9,0.9, 0.9,0.1,0.9,0.1,0.9, 0.1,0.9,0.9,0.9,0.1]; 我想用一个特定的百分比来破坏这个模式。例如,如果我想破坏模式%8,则必须更改矩阵的2个元素。如果元素为0.9,则应为0.1,反之亦然 对于基质气泡 x(:,1)=[-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1

我有如下矩阵

x1(1,:)=[0.1,0.9,0.9,0.9,0.1, 0.9,0.1,0.9,0.1,0.9, 0.9,0.9,0.1,0.9,0.9, 0.9,0.1,0.9,0.1,0.9, 0.1,0.9,0.9,0.9,0.1];
我想用一个特定的百分比来破坏这个模式。例如,如果我想破坏模式%8,则必须更改矩阵的2个元素。如果元素为0.9,则应为0.1,反之亦然

对于基质气泡

x(:,1)=[-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,
   -1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,
    -1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1]';
我尝试过这个功能,效果很好

function Ret=corrupt(Inx,per)

    I_SIZE=length(Inx);
    N_COR=floor(I_SIZE*per/100);

    I_INX=randperm(I_SIZE);
    C_INX=I_INX(1:N_COR);
    Inx(C_INX)= -1 * Inx(C_INX);

    Ret=Inx;
如何对0.1和0.9进行更改?

使用以下命令可能更容易:


伟大的你试过什么?我写了我试过的。我想你需要这样做-InxC\u INX=1-InxC\u INX;代码的其余部分保持不变。谢谢你,一切顺利。
C_INX = randsample(1:I_SIZE, N_COR);
Inx(C_INX) = 1-Inx(C_INX);