android - 为什么 Jama 矩阵的内维在第一次迭代中一致,但后来却不一致?

标签 android android-studio matrix matrix-multiplication jama

关注 Jama矩阵在我的代码中定义:

P: 3*3 Matrix
I: 3*3 identity Matrix
K: 3*2 Matrix
H: 2*3 Matrix
Q: 3*3 Matrix

以下是我的代码 fragment :
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返回您将结果存储在哪里?您是否可能覆盖其中一个矩阵?

更新

如果您的情况是使变量最终不是您的选择,那么您可以记录每个矩阵的维度,然后调试发生变化的维度。
private fun getP():Matrix{
    Log.d(TAG,"I dimension: ${I.rowDimension} x ${I.columnDimension}")
    Log.d(TAG,"K dimension: ${K.rowDimension} x ${K.columnDimension}")
    Log.d(TAG,"H dimension: ${H.rowDimension} x ${H.columnDimension}")
    Log.d(TAG,"Q dimension: ${Q.rowDimension} x ${Q.columnDimension}")

    val P = (I.minus(K.times(H))).times(Q)
    Log.d(TAG,"P is calculated")
    return P
}

关于android - 为什么 Jama 矩阵的内维在第一次迭代中一致,但后来却不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58625085/

相关文章:

java - 将 char[] 转换为 byte[] 不丢失 'bits'

Android 模拟器在 360 秒后无法启动

java - 如何添加向右滑动打开抽屉导航

java - AdMob 插页式广告在 Resume 上重复加载

python - Tensorflow tf.matmul 示例不正确?

java - 在 Android 中为涂抹/Swing 效果制作矩阵(见图片)

java - 通过 Wifi 从 Android 应用程序向 Raspberry Pi 发送数据

android - Canvas 不在 SurfaceView 中绘制

java - 如何选择颜色

R获得矩阵中每一行的最小值,并返回行名和列名