0
我正在使用CAS SAGE。我有一個矢量v屬於GF(2)。我將如何能夠找到此矢量的整數表示形式?請舉例嗎?GF(2)中的二進制向量到整數
aux = random_matrix(GF(2), n,2*n)
for i in range(2*n):
x = ZZ(list(aux[:,i]), base=2)
我正在使用CAS SAGE。我有一個矢量v屬於GF(2)。我將如何能夠找到此矢量的整數表示形式?請舉例嗎?GF(2)中的二進制向量到整數
aux = random_matrix(GF(2), n,2*n)
for i in range(2*n):
x = ZZ(list(aux[:,i]), base=2)
假設我理解你,你有一個載體住在了GF空間(2):
sage: V = VectorSpace(GF(2), 5)
sage: V
Vector space of dimension 5 over Finite Field of size 2
sage: v = V.random_element()
sage: v
(0, 1, 0, 1, 1)
有很多方法將其轉換爲一個Integer
,和許多同樣有效的表示。一個自然的將是:
sage: i = ZZ(list(v), base=2)
sage: i
26
sage: parent(i)
Integer Ring
sage: i.digits(2)
[0, 1, 0, 1, 1]
我不能得到這個。我用我的代碼編輯我的問題。錯誤是TypeError:無法強制到一個整數 –
Juan
@Juan:通過使用'aux [:,i]',你得到一個柱狀矩陣,而不是一個向量。 '打印類型(aux [:,i])'說服自己這是真的。所以'list(aux [:,i])'產生類似'[(0),(1),(1),(1),(0)]'而不是你想要的東西。 IOW,你的水平太高了;您需要GF(2)的元素列表,而不是集合列表。嘗試像'ZZ(list((aux [:,i] .T)[0]),2)''。 – DSM
.T的功能是什麼? – Juan