2

开始希望一个 7x4 二进制矩阵,我需要更改每列中的一个随机位来模拟错误。一直在尝试无济于事。

4

2 回答 2

2

一个非常直接的方法是使用 for 循环。它可能不是 MATLAB 中最有效的方法,但考虑到您的数据集非常小,它可能已经足够好了。

遍历四列中的每一列。在每次迭代中,随机选择一个从 1 到 7 的数字来表示您选择更改的该列中的行。最后,翻转该行/列的位。下面的代码就是这样做的。假设“A”是一个 7 行 4 列的二进制矩阵

for col=1:4;                  %// Iterate through each column
    row = ceil(7*rand());     %// Randomly chose a number from 1 to 7 to represent row
    A(row,col) = ~A(row,col); %// Flip the bit at the specified row/col
end
于 2012-09-03T04:12:34.537 回答
1

另一种可能性是在一次调用中创建 4 个随机数,并以矢量化方式分配:

rowNumbers = randi(4,[1 4])
A(rowNumbers,:) = ~A(rowNumbers,:);
于 2012-09-03T07:21:38.990 回答