当前位置: 首页 > 工具软件 > JAMA > 使用案例 >

Jama包的矩阵操作

谷博艺
2023-12-01

近段时间因为某些功能,需要对矩阵进行操作,然后百度了一下java对矩阵操作的包:一个是math3,另一个是Jama。

从我搜到的内容来看,Jama包对矩阵的操作稍微比math3丰富一些,所以我选择了Jama3。

以下是它的maven依赖,将其加入pom文件就能在工程中使用Jama包的类和方法了。

<!-- https://mvnrepository.com/artifact/gov.nist.math/jama -->
<dependency>
    <groupId>gov.nist.math</groupId>
    <artifactId>jama</artifactId>
    <version>1.0.3</version>
</dependency>

网上也有一些对Jama包的基本使用。大概就是将数组转换为矩阵、设定矩阵中的某些值、获得矩阵中的某些值、对矩阵进行拷贝和克隆。除此之外还有矩阵加、矩阵减、矩阵乘、矩阵求逆和转置。具体的操作方法可以参考百度。

但是你如果想将矩阵和向量进行乘操作,就不能简单的用times()方法了。

我们知道向量(列向量)可以看作是个一维数组,而times()方法只能接收Matrix类型参数,那么怎么将一个一维数组转换成一个Matrix类型变量呢?

例如我想将int[]{1,2,3,4}转换成向量(矩阵),并将其与由二维数组生成的矩阵做乘操作,见以下代码:

 double testarray[][]=new double[2][2];
        testarray[0][0]=1d;
        testarray[0][1]=2d;
        testarray[1][0]=3d;
        testarray[1][1]=4d;
//创建矩阵
Matrix matrix=new Matrix(testarray);
double[] testarray2=new testarray2[2];
testarray2[0]=1d;
testarray2[1]=2d;
//将testarray2创建为向量(矩阵)
Matrix vector=new Matrix(testarray2,1);
//进行乘操作,要注意vector是个行向量,所以得先转置
matrix.times(vector.transpose()).print(4,2);

以上就是矩阵和向量的乘操作的实现。

那么怎么将矩阵转换为二维数组。

只需要使用其的getarray()方法就可以了。

有不对的地方还请提出来~
 类似资料: