Scala-Breeze展开矩阵
在Octave/Matlab中,我可以如下展开单位矩阵Scala-Breeze展开矩阵,scala,octave,scala-breeze,Scala,Octave,Scala Breeze,在Octave/Matlab中,我可以如下展开单位矩阵 >> I = eye(3) I = Diagonal Matrix 1 0 0 0 1 0 0 0 1 >> A = [ 3 2 3 2 2 1 3 2 2 1 ] >> E = I(:, A) E = 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 0
>> I = eye(3)
I =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
>> A = [ 3 2 3 2 2 1 3 2 2 1 ]
>> E = I(:, A)
E =
0 0 0 0 0 1 0 0 0 1
0 1 0 1 1 0 0 1 1 0
1 0 1 0 0 0 1 0 0 0
如何使用Scala/Breeze实现相同的功能(即从A获得e,可能使用I) 明白了。实际上非常类似于八度
scala> val I = DenseMatrix.eye[Int](3)
I: breeze.linalg.DenseMatrix[Int] =
1 0 0
0 1 0
0 0 1
scala> val A = DenseMatrix(2, 1, 2, 1, 1, 0, 2, 1, 1, 0) // zero based in breeze
scala> I(::, A.toArray.toSeq)
res26: breeze.linalg.SliceMatrix[Int,Int,Int] =
0 0 0 0 0 1 0 0 0 1
0 1 0 1 1 0 0 1 1 0
1 0 1 0 0 0 1 0 0 0
警告是:
- 矩阵必须包含整数
- 索引以0为基础(与倍频程/Matlab中以1为基础相反)