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
조회 수: 4 (최근 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
댓글 수: 0
채택된 답변
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
Image Analyst
2016년 11월 11일
That's far simpler. Simply use randi():
m = 2 * randi([0,1], 100) - 1
James Tursa
2016년 11월 11일
If you just want -1 or +1, then see this link:
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!