如何用特定范围的随机数填充矩阵的列?

时间:2017-08-09 09:29:31

标签: matlab matrix

我有一个订单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

如何生成此表单的矩阵?

1 个答案:

答案 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