为什么Jama矩阵的内部尺寸在第一次迭代中一致,但后来却不一致?

问题描述 投票:1回答:1

以下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链接上获得了有关内部尺寸的一些信息。但是,我不知道解决方案。手动检查方程式时,矩阵尺寸匹配。我的方法有问题吗?

谢谢。

android android-studio matrix matrix-multiplication jama
1个回答
0
投票

您介意显示您如何呼叫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返回时,您将结果存储在哪里?您是否可能覆盖其中一个矩阵?

© www.soinside.com 2019 - 2024. All rights reserved.