我有一个订单100*10
的矩阵。现在的目标是用特定范围内的随机整数填充矩阵的每列。现在问题是每列的随机数范围都会发生变化。例如,对于第一列,范围为[1,100]
,第二列为-10 to 1
,依此类推至第10列。
这是我尝试过的:
b = [0,100;-10,1;0,1;-1,1;10,20]
a = []
for i=1 to 10
a[] = [(i:100)' randi(1,100)]
end
如何生成此表单的矩阵?
答案 0 :(得分:2)
我现在没有安装matlab,但我会做这样的事情。
m = 100;
n = size(b, 1);
range = b(:, 2) - b(:, 1);
offset = b(:, 1);
A = round(bsxfun(@minus, bsxfun(@times, rand(m, n), range), offset);
没有循环就会变成:
M = 100;
N = size(b, 1);
A = zeros(m, n); % preallocate to avoid matrix expansion
for ii = 1:n
A(:, ii) = randi(b(ii,:), m, 1);
end