【发布时间】:2014-05-04 13:35:33
【问题描述】:
我有如下矩阵;
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 进行更改?
【问题讨论】:
-
太棒了。你试过什么?
-
我写了我尝试过的。
-
我认为您需要这样做 -
Inx(C_INX)= 1-Inx(C_INX);,其余代码保持不变。 -
谢谢,成功了。