3

私はhmatrixHaskell で行列操作を行うことから始めています。マトリックスを作成するのは非常に簡単であることがわかりました:

ghci> let m = (10><10) [1..]
ghci> m
(10><10)
 [  1.0,  2.0,  3.0,  4.0,  5.0,  6.0,  7.0,  8.0,  9.0,  10.0
 , 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0,  20.0
 , 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0,  30.0
 , 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0,  40.0
 , 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0,  50.0
 , 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0,  60.0
 , 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0,  70.0
 , 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0,  80.0
 , 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0,  90.0
 , 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0 ]

行列の乗算でも簡単です。

ghci> m <> m
(10><10)
 [  3355.0,  3410.0,  3465.0,  3520.0,  3575.0,  3630.0,  3685.0,  3740.0,  3795.0,  3850.0
 ,  7955.0,  8110.0,  8265.0,  8420.0,  8575.0,  8730.0,  8885.0,  9040.0,  9195.0,  9350.0
 , 12555.0, 12810.0, 13065.0, 13320.0, 13575.0, 13830.0, 14085.0, 14340.0, 14595.0, 14850.0
 , 17155.0, 17510.0, 17865.0, 18220.0, 18575.0, 18930.0, 19285.0, 19640.0, 19995.0, 20350.0
 , 21755.0, 22210.0, 22665.0, 23120.0, 23575.0, 24030.0, 24485.0, 24940.0, 25395.0, 25850.0
 , 26355.0, 26910.0, 27465.0, 28020.0, 28575.0, 29130.0, 29685.0, 30240.0, 30795.0, 31350.0
 , 30955.0, 31610.0, 32265.0, 32920.0, 33575.0, 34230.0, 34885.0, 35540.0, 36195.0, 36850.0
 , 35555.0, 36310.0, 37065.0, 37820.0, 38575.0, 39330.0, 40085.0, 40840.0, 41595.0, 42350.0
 , 40155.0, 41010.0, 41865.0, 42720.0, 43575.0, 44430.0, 45285.0, 46140.0, 46995.0, 47850.0
 , 44755.0, 45710.0, 46665.0, 47620.0, 48575.0, 49530.0, 50485.0, 51440.0, 52395.0, 53350.0 ]

しかし、要素にアクセスするにはどうすればよいでしょうか? たとえば、本を読みたいのですがm[10][10]、その方法がよくわかりません。

ghci> m[10][10]
<interactive>:30:1:
The function `m' is applied to two arguments,
but its type `Matrix Double' has none
In the expression: m [10] [10]
In an equation for `it': it = m [10] [10]
4

1 に答える 1

6

おそらく@@>、「行列の位置を読み取る」を使用する必要があります。

λ > let m = (10><10) [1..]
λ > m @@> (0, 3)
4.0
λ > m @@> (3, 0)
31.0
λ > m @@> (9, 9)
100.0
λ > m @@> (10, 10)
*** Exception: matrix indexing out of range   

インデックスはゼロベースであることに注意してください。

また、おそらくAPI ドキュメントも読む必要があります。

于 2012-12-05T19:18:58.540 に答える