Matrisleri (tam veya seyrek) haskell'in vektör kütüphanesi ile verimli bir şekilde işlemek istiyorum. İşte (unchand), (seyrek) matrisler ve haskell vektörel kütüphanesi
Gördüğünüz gibi, matris kutusuz vektörlerin bir vektör olan bir matris tipiimport qualified Data.Vector.Unboxed as U
import qualified Data.Vector as V
data Link a = Full (V.Vector (U.Vector a))
| Sparse (V.Vector (U.Vector (Int,a)))
type Vector a = U.Vector a
olduğunu. Şimdi, bir vektör ile matris arasında nokta ürünü yapmak istiyorum. Bir toplam, fermuar ve haritayı birleştirerek yapmak oldukça basit.
Ama eğer bunu yaparsam, matrisin satırları üzerinden eşleme yapıyorum çünkü sonuç, kutulanmamış olsa bile kutulu bir vektördür.
propagateS output (Field src) (Full weights) = V.map (sum out) weights
where out = U.map output src
sum s w = U.sum $ zipWithFull (*) w s
propagateS output (Field src) (Sparse weights) = V.map (sum out) weights
where out = U.map output src
sum s w = U.sum $ zipWithSparse (*) w s
zipWithFull = U.zipWith
zipWithSparse f x y = U.map f' x
where f' (i,v) = f v (y U.! i)
Kutusuz bir vektörü verimli bir şekilde nasıl alabilirim?
Saha Tanımı Nedir? –