나는 그 안에 0과 1의 모든 조합을 가진 2^n 행렬을 갖고 싶습니다. 예를 들어, n = 6 (n = # rows x #columns) array{1}=[0 0 0; 0 0 0]
, array{2}=[0 0 0; 0 0 1]
... array{64}=[1 1 1;1 1 1]
. 내가 MATLAB을 사용하고 있는데 combn.m
(M = COMBN (V, N)은 벡터 V의 원소 N 원소의 모든 조합을 반환한다. M은 size (length (V).^N) -by-N이다.), dec2bin()
그러나 나는 그것을 꽤 올바르게 할 수 없다. 나의 또 다른 아이디어는 큰 행렬을 생성 한 다음 2^n 행렬로 나누는 것이 었습니다. 예를 들면, N = 6 (2 × 3), 난 날 제공이 M=combn([0 1],3)
했다 : 다음모든 조합으로 이진 행렬을 채우는 방법은 무엇입니까?
M =
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
을이 M2=combn(M,2)
같은 큰 매트릭스를 생성하기 위해 M
을 사용하지만, 이것은 잘못된 결과를 생성한다. 나는이 같은 M 행을 연결할 경우, :
M=combn([000;010;100;001;110;011;101;111],2)'
내가 예를 들어 컬럼에 대해, 즉 내가 각 열을 얻고 64 matrices.So에 별도로 변환 할 수 있습니다
M =
Columns 1 through 21
0 0 0 0 0 0 0 0 10 10 10 10 10 10 10 10 100 100 100 100 100
0 10 100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110
Columns 22 through 42
100 100 100 1 1 1 1 1 1 1 1 110 110 110 110 110 110 110 110 11 11
11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10
Columns 43 through 63
11 11 11 11 11 11 101 101 101 101 101 101 101 101 111 111 111 111 111 111 111
100 1 110 11 101 111 0 10 100 1 110 11 101 111 0 10 100 1 110 11 101
Column 64
111
111
을 기대 가까이 뭔가를 얻을 수 1은 [0;0]
에서 [0 0 0;0 0 0]
등으로 변환 될 것입니다. 그러나 나는 그것이 더 짧은 시간에 우아하게 해결 될 수있는 훨씬 쉬운 문제라고 생각합니다. dec2bin
사용
어떻게 제어하나요? 나는 n이 6이지만 2 행 3 열일 수 있음을 의미합니다. 위의 예와 관련시킬 수 있습니까? – JustCurious
@JustCurious 죄송합니다. 질문을주의 깊게 읽지 않았습니다. 나는 지금 당신이 원하는 것을 이해하지 못합니다. –
2^n 2 진 행렬을 원합니다. 각 행렬은 다른 행렬과 같아야하지만 동일한 #rows x #columns를 가져야합니다. 중요한 것은 n = # rows x #columns입니다. 그래서 n = 6 인 경우, 각각 64 개의 행렬을 갖고 싶습니다. 각각의 행렬에는 0과 1의 다른 조합이 있습니다. 지금은 조금 더 명확 해 졌나요? – JustCurious