Making a matrix of R*C size that takes the values randomly from an array- Y.

6 次查看(过去 30 天)
I want to make a random matrix of R*C size that takes the values randomly from an array Y.
For example I want to make a 7*8 matrix that takes value from this array Y = [ 1 6 1 8 4 5], and place them randomly in the matrix.. I have tried randi command to do this, but randi doesn't take fixed values like I have stated above.

采纳的回答

Wan Ji
Wan Ji 2021-8-18
Hi, friend! randi is OK, it can help, look
Y = [ 1 6 1 8 4 5];
R = 7; C = 8;
indices = randi([1,numel(Y)], R, C);
A = Y(indices)
The result is
A =
8 1 5 4 4 4 1 1
1 1 8 1 1 5 6 1
5 1 1 1 6 1 1 1
8 1 8 5 1 1 4 5
5 1 8 8 1 1 8 8
5 8 1 8 8 6 6 1
1 1 5 1 4 4 8 4
Wish you will like it
  1 个评论
Wan Ji
Wan Ji 2021-8-18
Here, because 1 appears in Y array twice, its appearance possibility in matrix A is twice as much as other numbers( 6,8,4 and 5).

请先登录,再进行评论。

更多回答(1 个)

Yazan
Yazan 2021-8-18
i1 = 7; i2 = 8;
y = [1 6 1 8 4 5];
randIdx = randi(length(y), 1, i1*i2);
data = reshape(y(randIdx), i1, i2)
data = 7×8
6 4 5 6 5 1 1 4 1 4 1 1 1 1 1 1 1 1 1 1 8 1 6 1 6 4 5 6 1 6 6 8 4 5 8 1 6 4 8 8 1 8 4 8 4 5 8 1 6 6 8 1 4 6 5 1

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品


版本

R2012a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by