2013-05-05 3 views
0

행렬이 1200x130이고 행의 일부가 동일합니다 (한 행에서 4 행, 다른 행에서 8 행 등). 나는 동일한 ID를 동일한 행에 할당하는 효율적인 방법을 찾고있다.이진 행렬에서 ID 행을 동일한 행에 할당

다음은 Excel에서 시도한 내용입니다. 각 행에 대해 k 번째 열 항목에 2^k를 곱하고 모든 열을 합산했습니다. 이론적으로, 각각의 다른 행에 대해, 이것은 나에게 유일한 ID를 주어야하지만 숫자는 그 숫자에 대한 비교가 매우 큰 엑셀을 엉망으로 만든다. (특정 숫자까지 3.234023490249 x 10^246을 저장하고 나머지 숫자는 무시하기 때문입니다.)

그래서 VBA를 사용하기로 결정했으나 생각할 수있는 유일한 방법은 모든 행과 열. 나는 이것을 처리하는보다 효율적인 방법이 있어야한다고 생각한다. 어떤 추천?

는 (나는 Excel 또는 VBA 특정 솔루션을 찾고 있지 않다. 어떤 권고가 도움이 될 것이다.) 사전에

감사합니다.

+0

* "k 번째 열 항목에 2^k를 곱하고 모든 열에 대해 합계 한 내용"*이 무슨 뜻인지 확실하지 않습니다. 좀 더 자세히 설명해 주실 수 있습니까? – glh

+0

각 행 번호는 고유하며, 고유 한 번호가 필요한 경우'row_nbr/1000'을 추가합니다. – glh

+0

다음과 같은 행에 대해 : 1 0 0 1 0 1, 1 * 2^1 + 0 * 2^2 + 0 * 2^3 + 1 * 2^4 + 0 * 2^5 + 1 * 2^6 ... 소수의 열이있을 때 잘 작동하지만이 경우에는 그렇지 않습니다. – stgath

답변

0

이진수를 10 진수로 변환합니다. 참으로 엄청난 숫자입니다. long 프로그램 언어의 정수는 64 비트 숫자입니다. 따라서 130 비트가 오버플로됩니다.

결합 된 ID를 사용하여 각각을 최대 정수 값으로 제한 할 수 있습니다. 130 비트의 경우 행 당 최소 3 개의 정수가 필요합니다.

각 행마다 3 개의 ID가 있습니다. 첫 번째 ID는 처음 40 비트를 사용한다고 가정 해보십시오. 둘째 ID 셋째 ID가 Comparson가 equal ID를 반환 동일하게 3 개 ID를 요구한다 (130)

81의 숫자를 취 41 내지 80의 숫자를 취.


문자열도 사용할 수 있습니다.

16 진수 (4 자리의 이진수마다 한 문자 씩)를 사용하면 130/4 = 33 자입니다.

아마도 32 개의 기본 번호를 입력하면 130/5 = 26자를 입력 할 수 있습니다. 각 5 비트는 0, 1, 2, ..., 8, 9, A, B, ..., U, V의 문자에 해당합니다.

또는 모든 비트가 포함 된 일반 130 자 문자열.