[Java]编写自己的Matrix矩阵类

时间:2022-04-20 06:03:17

用java实现一个简单的矩阵类,可以实现简单的矩阵计算功能。

class Matrix

1.向量点乘
public static double dot(double[] x,double[] y)

2.矩阵和向量之积
public static double[] mult(double[][] a,double[] x)

3.向量和矩阵之积
public static double[] mult(double[] y,double[][] a)

4.矩阵和矩阵之积
public static double[][] mult(double[][] a,double[][] b)

5.转置矩阵
public static double[][] transpose(double[][] a)

6.打印向量
public static void printVector(double[] a)

7.打印矩阵
public static void printMatrix(double[][] a)

package com.xiaff;

public class Matrix {
//向量点乘
public static double dot(double[] x,double[] y) {
int lengthX=x.length;
int lengthY=y.length;
if(lengthX!=lengthY){
System.out.println("Cannot Dot Product!");
return 0.0;
}
double answer=0.0;
for(int i=0;i<lengthX;i++){
answer+=x[i]*y[i];
}
return answer;
} //矩阵和向量之积
public static double[] mult(double[][] a,double[] x){
int rowA=a.length;
int columnA=a[0].length;
int rowX=x.length;
if(columnA!=rowX){
System.out.println("Cannot multiply them!");
return x;
}
double[] answer=new double[rowA];
for(int i=0;i<rowA;i++){
for(int j=0;j<columnA;j++){
answer[i]+=a[i][j]*x[j];
}
}
return answer;
} //向量和矩阵之积
public static double[] mult(double[] y,double[][] a){
int rowA=a.length;
int columnA=a[0].length;
int columnY=y.length;
if(columnY!=rowA){
System.out.println("Cannot multiply them!");
return y;
}
double[] answer=new double[rowA];
for(int i=0;i<columnA;i++){
for(int j=0;j<columnY;j++){
answer[i]+=y[j]*a[j][i];
}
}
return answer;
} //矩阵和矩阵之积
public static double[][] mult(double[][] a,double[][] b){
int rowA=a.length;
int rowB=b.length;
int columnA=a[0].length;
int columnB=b[0].length;
if(columnA!=rowB){
System.out.println("Cannot multiply them!");
return a;
}
double[][] c=new double[rowA][columnB];
for (int i = 0; i < rowA; i++) {
for (int j = 0; j < columnB; j++) {
for (int k = 0; k < columnA; k++)
c[i][j] += a[i][k] * b[k][j];
}
}
return c;
} //转置矩阵
public static double[][] transpose(double[][] a){
int row=a.length;
int column=a[0].length;
if(row!=column){
System.out.println("Cannot transpose it!");
return a;
}
double[][] b=new double[row][column];
for(int i=0;i<row;i++){
for(int j=0;j<column;j++){
b[i][j]=a[j][i];
}
}
return b;
} //打印向量
public static void printVector(double[] a){
for(double i:a){
System.out.print(i+" ");
}
System.out.println();
} //打印矩阵
public static void printMatrix(double[][] a){
for(double[] row:a){
for(double i:row)
System.out.print(i+" ");
System.out.println();
}
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

[Java]编写自己的Matrix矩阵类的更多相关文章

  1. &lbrack;Android&rsqb; 使用Matrix矩阵类对图像进行缩放、旋转、对照度、亮度处理

        前一篇文章讲述了Android拍照.截图.保存并显示在ImageView控件中,该篇文章继续讲述Android图像处理技术,主要操作包含:通过打开相冊里的图片,使用Matrix对图像进行缩放. ...

  2. 用Java编写的http下载工具类,包含下载进度回调

    HttpDownloader.java package com.buyishi; import java.io.FileOutputStream; import java.io.IOException ...

  3. 矩阵类的python实现

    科学计算离不开矩阵的运算.当然,python已经有非常好的现成的库:numpy. 我写这个矩阵类,并不是打算重新造一个*,只是作为一个练习,记录在此. 注:这个类的函数还没全部实现,慢慢在完善吧. ...

  4. 类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name&comma;腿的数量legs,统计动物的数量 count&semi;方法:设置动物腿数量的方法 void setLegs&lpar;&rpar;&comma;获得腿数量的方法 getLegs&lpar;&rpar;&comma;设置动物名称的方法 setKind&lpar;&rpar;&comma;获得动物名称的方法 getKind&lpar;&rpar;&comma;获得动物数量的方法 getCount&lpar;&rpar;。定义Fish类,是Animal类的子类,

    编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 ...

  5. 【CSS3】 理解CSS3 transform中的Matrix&lpar;矩阵&rpar;

    理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...

  6. 理解CSS3 transform中的Matrix&lpar;矩阵&rpar;

    一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...

  7. 理解CSS3 transform中的Matrix&lpar;矩阵&rpar;——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...

  8. 一个Java文件至多包含一个公共类

    编写一个java源文件时,该源文件又称为编译单元.一个java文件可以包含多个类,但至多包含一个公共类,作为编译时该java文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为[公共类 ...

  9. OpenGL矩阵类&lpar;C&plus;&plus;&rpar;

    概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例:投影矩阵 概述 OpenGL固定功能管线提供4个不同类型的矩阵(GL_MODELVIEW.GL_PROJECTION. ...

随机推荐

  1. Graphics平移缩放旋转&lpar;转载&rpar;&plus;点睛

    点睛:可以进行多次旋转和平移,也就是平移以后再平移,旋转以后再旋转,有时候一次达不到要求,如果你想一次调整完美的话很麻烦,所以最好多次,上代码 private void btnTranslate_Cl ...

  2. URAL 2048 History 蔡勒公式

     HistoryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.acti ...

  3. &lbrack;搜片神器&rsqb;BT管理程序数据库速度调试优化问题

    DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr 谢谢园子 ...

  4. sql 数据字段类型

    bit    整型 bit数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或False .On 或Off. 注意:很省空间的一种数据类型, ...

  5. mysql join 的同时可以筛选数据

    看sql ) ) group by a.id; 这里面用了多个子查询,与join关联. 其中 不仅有关联条件,还对sh_mall_goods表进行了筛选,只选出mall_id为9的数据,进行关联. 这 ...

  6. Unity遮挡透明渐变

    遮挡透明若没有渐变实现方法: 1.透明中物体存在list中 2.每过一段时间(可以每帧,但是流畅性会降低)摄像机发送一条射线向玩家,out hitInfo 3.list与hitInfo比对,将在lis ...

  7. 0x80070522&colon;客户端没有所需的特权的解决方法&lpar;win7&comma;win10通过&rpar;

    往C盘上粘贴文件的时候提示错误0x80070522:客户端没有所需的特权,解决方法如下: 一般情况下,我们思考的方向肯定是往用户权限方向的,但增加的用户是最高权限的管理员还是不可以..   暂时还没有 ...

  8. css第二天

    二丶 1.字体属性font: 字体名称(font-family)字体大小(font-size):pc中通常,字体大小表示为12px,14px.移动设备中通常表示为0.57rem.字体粗细(font-w ...

  9. 用STS构建spring boot

    操作步骤:1. 登录地址http://spring.io/tools 下载sts,spring-tool-suite-3.9.5.RELEASE-e4.8.0-win32-x86_64.zip2. 解 ...

  10. LeetCode(75):分类颜色

    Medium! 题目描述: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 ...

相关文章