【问题标题】:How to fill columns of a matrix with random numbers of specific range?如何用特定范围的随机数填充矩阵的列?
【发布时间】:2017-08-09 09:29:30
【问题描述】:

我有一个顺序矩阵 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

如何生成这种形式的矩阵?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    我现在没有安装 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
    

    【讨论】:

    • 错误使用 * 内部矩阵尺寸必须同意这是我得到的
    • 为了将矩阵和向量相乘,我想你需要使用bsxfun
    • 对此答案的编辑或单独的答案会很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多