以下Jama
矩阵在我的代码中定义:
P: 3*3 Matrix
I: 3*3 identity Matrix
K: 3*2 Matrix
H: 2*3 Matrix
Q: 3*3 Matrix
以下是我的代码段:
private Matrix getP() {
P= (I.minus(K.times(H))).times(Q);
Log.d("csv", "P is calculated");
return P;
}
[运行代码时,在第一次迭代时它起作用,即,P is calculated
打印在Logcat上。但是,它仅发生一次并且应用程序被停止。错误如下:
java.lang.IllegalArgumentException: Matrix inner dimensions must agree.
如果Matrix内部维是错误,那么它如何在第一次迭代中运行?我在this链接上获得了有关内部尺寸的一些信息。但是,我不知道解决方案。手动检查方程式时,矩阵尺寸匹配。我的方法有问题吗?
谢谢。
您介意显示您如何呼叫getP
吗?无论我单击fab
按钮多少次,以下内容均有效。
class MainActivity : AppCompatActivity() {
val I = Matrix.identity(3,3)
val K = Matrix(3,2,5.0)
val H = Matrix(2,3,7.0)
val Q = Matrix(3,3,8.0)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fab.setOnClickListener { view ->
getP()
}
}
private fun getP():Matrix{
val P = (I.minus(K.times(H))).times(Q)
Log.d("MainActivity","P is calculated")
return P
}
}
getP
返回时,您将结果存储在哪里?您是否可能覆盖其中一个矩阵?