Matlab 保存在每个循环中创建的矩阵值保存在公共矩阵中,每个循环矩阵具有相同的行大小,但列为ow

Matlab 保存在每个循环中创建的矩阵值保存在公共矩阵中,每个循环矩阵具有相同的行大小,但列为ow,matlab,for-loop,matrix,Matlab,For Loop,Matrix,现在将此所有名称值矩阵保存在所有生成值的结果矩阵中 在每个循环中,行大小不固定,但coiumn为2预先分配最大大小的矩阵,并删除末尾的冗余行: a=18; b=22; for i=1:10 r1 = randi([18 22],1,1) name= (b-a).*rand(r1,2) + a end 你可以用一行代码来实现它;实际上,在循环的每个迭代中 你: 生成一个整数随机数r1(例如20) 然后使用它生成r1double随机数,该随机数乘以(b-a) 然后添加到a 这些随机数不受prev

现在将此所有名称值矩阵保存在所有生成值的结果矩阵
在每个循环中,行大小不固定,但coiumn为2

预先分配最大大小的矩阵,并删除末尾的冗余行:

a=18;
b=22;
for i=1:10
r1 = randi([18 22],1,1)
name= (b-a).*rand(r1,2) + a
end

你可以用一行代码来实现它;实际上,在循环的每个迭代中 你:

  • 生成一个
    整数
    随机数
    r1
    (例如
    20
  • 然后使用它生成
    r1
    double
    随机数,该随机数乘以
    (b-a)
    然后添加到
    a
  • 这些随机数不受previos迭代中生成的随机数的影响
  • a
    b
    是常量,因此在循环中不要更改
在循环结束时,行数将是循环的
整数
随机数,因此您可以在计算
name
sum
时直接生成
10
整数随机数,以创建所需的集
name
值:

a = 18;
b = 22;
% number of iterations
n = 10;
% maximum number of rows
maxRows = b*n;
% preallocating matrix
nameMat = zeros(maxRows,2);
currentRow = 0;
for i = 1:n
    r1 = randi([18 22],1,1);
    name = (b-a).*rand(r1,2) + a;
    nameRows = size(name,1);
    nameMat((1:nameRows) + currentRow,:) = name;
    currentRow = currentRow + nameRows; 
end
% remove redundant rows
nameMat(currentRow+1:end,:) = [];
希望这有帮助

Qapla'

可能的副本
a=18;
b=22;
n_iter=10;

name=(b-a).*rand(sum(randi([18 22],n_iter,1)),2) + a