例如我有:
A = 5
B = randi([0 1], 5, 5)
我会制作一个随机的5x5矩阵和0'
我怎样才能限制矩阵,因此它只有A
的值为1,所以在这种情况下为5 1?
答案 0 :(得分:7)
这里创建了一个零的矩阵B,它具有所需的大小,然后B的随机位置变为1
A = 5;
B = zeros(5,5);
B(randperm(numel(B),A)) = 1
输出
B =
0 1 0 0 0
0 0 0 0 0
0 0 0 0 1
1 0 1 0 1
0 0 0 0 0
答案 1 :(得分:1)
以下是使用datasample的替代解决方案,其中,与@ RTL的解决方案类似,您首先创建一个零矩阵,然后添加给定数量的矩阵:
clc;
clear all;
A = 5;
B = zeros(5,5);
y = datasample(1:size(B,1)*size(B,2),A) % Randomly select 5 (i.e. A) linear indices which will be replaced by 1.
B(y) = 1
y =
12 17 1 22 14
B =
1 0 0 0 0
0 0 1 1 1
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0