How to create N-tuples in Matlab?
조회 수: 34 (최근 30일)
이전 댓글 표시
What would be the easiest way to create a list of n-tuples in Matlab?
For example, if I want to generate all possible 3-tuples of 0 and 1: I'd want to generate the following set of tuples:
((0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1))
댓글 수: 0
채택된 답변
Bruno Luong
2018년 9월 29일
dec2bin(0:2^3-1)-'0'
댓글 수: 2
Walter Roberson
2021년 9월 30일
A = dec2bin(0:2^3-1)
dec2bin() outputs characters.
double(A)
Those characters have internal codes 48 ('0') or 49 ('1')
B = '0'
double(B)
The character code for '0' is 48
A - B
subtract the character code for '0' from the character codes for the bits to get relative offsets compared to '0' . Characters that were '0', upon having '0' subtracted, give a result of (numeric) 0 . Characters that were '1', upon having '1' subtracted, give a result of (numeric) 1 because the internal code for the character '1' is (numeric) 1 greater than the internal code for the character '0'
So subtracting '0 converts between characters '0' and '1' to numeric 0 and 1.
추가 답변 (2개)
Steven Lord
2024년 1월 5일
If you're using release R2023a or later of MATLAB you could use the combinations function to do this.
v = [0 1];
c = combinations(v, v, v)
If you need the result as a numeric array rather than a table array:
c = combinations(v, v, v).Variables
댓글 수: 0
Stephan Reichelt
2024년 1월 5일
There is another quite simple implementation of this problem:
% define the values
v = [0, 1]
% generate all combinations of length 3 with repetitions
C = combvec(v,v,v)'
댓글 수: 1
John D'Errico
2024년 1월 5일
Note that combvec is not found in MATLAB, unless you have the neural net toolbox.
which combvec -all
help combvec
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!