How do I create a n by n matrix, randomly filled with only k specific values ; m1,m2,m3..mk where m1, m2, m3..mk are specified

2 次查看(过去 30 天)
Example
Say I want a 3 by 5 matrix filled randomly with only 2 particular values 2 and 6
A=
2 6 2 2 6; 6 2 6 6 2; 2 2 6 2 2;
I'm thinking of using a function like Rand and combine it with a round function, any tips/solutions are much appreciated!
-Tarun

采纳的回答

Image Analyst
Image Analyst 2016-11-10
编辑:Image Analyst 2016-11-10
Try this:
myNumbers = [2.3, pi] % Whatever
% Find out how many unique numbers there are.
numNumbers = length(unique(myNumbers))
% Create a labeled 3-by-5 matrix with values from 1 to numNumbers
m = randi(numNumbers, 3, 5)
% Now replace each integer label ID of m with the value from myNumbers
for k = 1 : numNumbers
m(m == k) = myNumbers(k);
end
% Print to command window:
m
In the command window you'll see:
myNumbers =
2.3 3.1416
numNumbers =
2
m =
1 2 1 2 2
2 1 1 1 2
1 2 1 1 2
m =
2.3 3.1416 2.3 3.1416 3.1416
3.1416 2.3 2.3 2.3 3.1416
2.3 3.1416 2.3 2.3 3.1416
It's generalizable to any numbers you want to use, not just integers, and any number of rows and columns.
  3 个评论

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by