是否可以在不使用MATLAB循环的情况下替换特定向量的矩阵的某些行(在我的情况下,是随机向量)?
假设:
A = [1 2 3;
4 5 6;
7 8 9;
10 11 12]
我想将A([2 3],:)
替换为v = rand(1,3)
,但我真的希望随机生成A
的每个选定行(在本例中为2和3)。
这个问题是我想要概括它为每个给定的矩阵A
而不使用MATLAB中的循环。有可能吗?
谢谢。
Rui Semeano
答案 0 :(得分:3)
怎么样:
A([2 3],:) = rand(2,size(A,2));
您可以A
获取size(A,2)
中的列数,然后创建一个具有所需大小的随机矩阵,并将其分配给A
。
如果您还想随机选择行,那么对于N
行,您可以写:
N = 2;
randRows = randperm(size(A,1),N);
A(randRows,:) = rand(N,size(A,2))
P.S - 如果要随机化整数,请使用randi
。
答案 1 :(得分:0)
听起来你想随机生成[2,3]
?我不确定所以我只是详细地命名所有内容并使所有内容随机。
MinimumInteger = 1;
MaximumInteger = 12;
NumberOfRows = 4;
NumberOfColums = 3;
A = randi([MinimumInteger, MaximumInteger], NumberOfRows, NumberOfColums);
NumberOfRowsToChange = randi([0, NumberOfRows]);
RowsToChange = randperm(NumberOfRows, NumberOfRowsToChange);
A(RowsToChange, :) = randi([MinimumInteger, MaximumInteger], NumberOfRowsToChange, NumberOfColums);