我有一个这样的矩阵:
一个=
1 1 1 0 1
0 1 1 0 0
0 0 0 0 1
1 0 0 0 0
0 1 0 1 1
例如,我想用 0 随机替换该矩阵中 1 元素的 30%,并独立重复此过程 10 次,并且在工作结束时,我必须有 10 个独立矩阵,每个矩阵应该有 30% 1个元素比原始矩阵少。
这是我用来执行此操作的代码:
for i=1:10
f=.3;
A_ones=find(A);
n = round(f*length(A_ones));
A_ones_change = randsample(A_ones,n);
A(A_ones_change) = 0;
end
A
但是 matlab 对这段代码所做的事情是它在开始时采用原始矩阵 A 并将其 1 元素的 30% 替换为 0。但是第二次它将上一步的结果矩阵作为 A(不是原始的矩阵)并用 0 替换该矩阵中剩余的 1 个元素的 30%,并一次又一次地执行 10 次,最后它只给了我 1 个矩阵,如下所示:
一个=
0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
我该如何解决这个问题并让 matlab 对每个 i 的“原始矩阵 A”执行此过程?