我正在计算一个协方差矩阵而没有任何问题:
DoubleMatrix W = new DoubleMatrix(w);
DoubleMatrix ret = new DoubleMatrix(coReturns);
DoubleMatrix meanRets = ret.columnMeans();
DoubleMatrix demeanedReturns = ret.subRowVector(meanRets);
DoubleMatrix S = demeanedReturns.transpose().mmul(demeanedReturns).div(varianceDataPoints - 1);
但突然间我抛出了这个异常:
Exception in thread "main" java.lang.IllegalArgumentException: XERBLA: Error on argument 8 (LDA) in DGEMM
at org.jblas.NativeBlas.dgemm(Native Method)
at org.jblas.SimpleBlas.gemm(SimpleBlas.java:247)
at org.jblas.DoubleMatrix.mmuli(DoubleMatrix.java:1781)
at org.jblas.DoubleMatrix.mmul(DoubleMatrix.java:3138)
我真的不知道这个例外试图告诉我什么。谷歌也不知道。有人能解释一下我在这里发生了什么以及如何解决这个问题吗?
答案 0 :(得分:0)
您可以找到LDA here的目的:
LDA is INTEGER
On entry, LDA specifies the first dimension of A as declared
in the calling (sub) program. When TRANSA = 'N' or 'n' then
LDA must be at least max( 1, m ), otherwise LDA must be at
least max( 1, k ).
有一个相关的SO post解释了它的含义。
jblas的源代码是here,所以你应该能够逐步完成它并弄清楚发生了什么。
看起来奇怪的是,在线上你得到异常(SimpleNative:247
),LDA被设置为0(而不是1和k之间的值)。我建议在jblas issue tracker上打开一个问题。