标签: jama

如何使用JAMA将矩阵乘以向量?

我正在尝试从双打数组中创建一个向量.然后我想用矩阵乘以这个向量.有谁知道我怎么能做到这一点?下面是一个非常简单的例子,我想开始工作.

// Create the matrix (using JAMA)
Matrix a = new Matrix( [[1,2,3],[1,2,3],[1,2,3]] );

// Create a vector out of an array
...

// Multiply the vector by the matrix
...
Run Code Online (Sandbox Code Playgroud)

java vector matrix jama matrix-multiplication

5
推荐指数
1
解决办法
1万
查看次数

尝试压缩图像时出现彩色像素(包含图片)

我正在尝试使用奇异值分解来压缩给定的图像.我以为我有它,直到我注意到我在整个过程中不断出现垃圾色像素.

垃圾像素

右上角显示的数字表示迭代次数,其中0是原始图像.

这是一个常见错误吗?有什么我想念的吗?

我认为它可能与我的数学本身有关.我正在使用JAMA,一个java矩阵包,它为我处理这个.下面是我每次迭代的实现:

for (int i = 0; i < k; i++) {    
    Matrix step = (uColumns[i].times(sValues[i])).times(vColumns[i].transpose());
    encoded = encoded.plus(step);
}
Run Code Online (Sandbox Code Playgroud)

基本上我正在做(或尝试做)是:

M = M + (s1*u1*v1^t)
Run Code Online (Sandbox Code Playgroud)

我的实现是否有明显错误,或者错误可能是由于JAMA执行SVD的方式?根据我的测试,矩阵U和V中的值的符号在某些行中与Wolframalpha或Matlab生成的符号不同.

任何帮助表示赞赏.

谢谢,

瑞斯蒂昂

java jama image-compression

5
推荐指数
1
解决办法
996
查看次数

Why does the Jama matrix inner dimension agree in the first iteration, but later it does not?

Following Jama Matrices are defined in my code:

P: 3*3 Matrix
I: 3*3 identity Matrix
K: 3*2 Matrix
H: 2*3 Matrix
Q: 3*3 Matrix
Run Code Online (Sandbox Code Playgroud)

Following is my code snippet:

private Matrix getP() {
        P= (I.minus(K.times(H))).times(Q);
        Log.d("csv", "P is calculated");
        return P;
    }
Run Code Online (Sandbox Code Playgroud)

While running the code, at first iteration it works, i.e, P is calculated is printed at the Logcat. However, it happens only once and the application gets stopped. Following is the error:

 java.lang.IllegalArgumentException: Matrix inner dimensions must agree. …
Run Code Online (Sandbox Code Playgroud)

android matrix jama matrix-multiplication android-studio

5
推荐指数
1
解决办法
126
查看次数

java jama矩阵问题

我正在使用jama来计算 SVD。效果非常好。如果我通过方阵。例如 2x2 或 3x3 等矩阵。但是当我传递像 2x3 或 4x8 这样的东西时,它会给出错误。我使用了他们所有的例子。他们有不同的构造函数来执行这项工作。我的第二个问题是,我使用 3x3 矩阵,它给出了

double[][] vals = {{1.,1.,0},{1.,0.,1.},{1.,3.,4.},{6.,4.,8.}};
  Matrix A = new Matrix(vals);
Run Code Online (Sandbox Code Playgroud)

它产生了以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
Run Code Online (Sandbox Code Playgroud)

之后我想使用另一个构造函数,如下所示

double[][] vals = {{1.,1.,0,4},{1.,0.,1.,2},{1.,3.,4.,8},{1.,3.,4.,8}};
  Matrix A = new Matrix(vals,4,3);
Run Code Online (Sandbox Code Playgroud)

它产生以下输出:

A = 
 1.0 1.0 0.0
 1.0 0.0 1.0
 1.0 3.0 4.0
 6.0 4.0 8.0

A = U S V^T

U = 
 0.078 -0.115 -0.963
 0.107 -0.281 0.260
 0.402 0.886 -0.018
 0.906 -0.351 0.060

Sigma = 
 11.861881 0.000000 0.000000
 0.000000 …
Run Code Online (Sandbox Code Playgroud)

java math matrix jama

4
推荐指数
1
解决办法
6970
查看次数

奇异值分解:Jama、PColt 和 NumPy 的不同结果

我想在一个大(稀疏)矩阵上执行奇异值分解。为了选择最好(最准确)的库,我尝试使用不同的 Java 和 Python 库复制此处提供的 SVD 示例。奇怪的是,我在每个库中得到了不同的结果。

这是原始示例矩阵及其分解(US 和 VT)矩阵:

A =2.0  0.0 8.0 6.0 0.0
   1.0 6.0 0.0 1.0 7.0
   5.0 0.0 7.0 4.0 0.0
   7.0 0.0 8.0 5.0 0.0 
   0.0 10.0 0.0 0.0 7.0

U =-0.54 0.07 0.82 -0.11 0.12
   -0.10 -0.59 -0.11 -0.79 -0.06
   -0.53 0.06 -0.21 0.12 -0.81
   -0.65 0.07 -0.51 0.06 0.56
   -0.06 -0.80 0.09 0.59 0.04

VT =-0.46 0.02 -0.87 -0.00 0.17
    -0.07 -0.76 0.06 0.60 0.23
    -0.74 0.10 0.28 0.22 -0.56 …
Run Code Online (Sandbox Code Playgroud)

numpy jama svd colt lsa

3
推荐指数
1
解决办法
4131
查看次数

Jama的特征值分解函数问题

当我使用时,我得到一个错误的特征向量(也通过多次运行检查以确定)matrix.eig().矩阵是:

1.2290 1.2168 2.8760 2.6370 2.2949 2.6402
1.2168 0.9476 2.5179 2.1737 1.9795 2.2828
2.8760 2.5179 8.8114 8.6530 7.3910 8.1058
2.6370 2.1737 8.6530 7.6366 6.9503 7.6743
2.2949 1.9795 7.3910 6.9503 6.2722 7.3441 
2.6402 2.2828 8.1058 7.6743 7.3441 7.6870
Run Code Online (Sandbox Code Playgroud)

该函数返回特征向量:

-0.1698  0.6764  0.1442 -0.6929 -0.1069  0.0365
-0.1460  0.6478  0.1926  0.6898  0.0483 -0.2094
-0.5239  0.0780 -0.5236  0.1621 -0.2244  0.6072
-0.4906 -0.0758 -0.4573 -0.1279  0.2842 -0.6688
-0.4428 -0.2770  0.4307  0.0226 -0.6959 -0.2383
-0.4884 -0.1852  0.5228 -0.0312  0.6089  0.2865
Run Code Online (Sandbox Code Playgroud)

Matlab为相同的输入提供以下特征向量:

0.1698 -0.6762 -0.1439 …
Run Code Online (Sandbox Code Playgroud)

java jama eigenvector

2
推荐指数
1
解决办法
3650
查看次数

使用 Jama 库的矩阵乘法

我想使用 Jama 库将 2 个矩阵相乘,但它返回:

A col: 4 row: 4
B col: 1 row: 4
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Matrix dimensions must agree.
Run Code Online (Sandbox Code Playgroud)

我的代码:

double[][] arrA = { {1,0,0,0}, {0, Math.cos(0.34), -Math.sin(0.34), 0}, {0, Math.sin(0.34), Math.cos(0.34), 0}, {0,0,0,1} };
        double[][] arrB = { {x}, {y}, {z}, {1} };
        Matrix A = new Matrix(arrA, 4, 4);
        Matrix B = new Matrix(arrB, 4, 1);
        A.print(1, 1);
        B.print(1, 1);
        System.out.println("A col: " + A.getColumnDimension() + " row: " + A.getRowDimension());
        System.out.println("B col: …
Run Code Online (Sandbox Code Playgroud)

java matrix multiplication jama

2
推荐指数
1
解决办法
5704
查看次数