用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矩阵类的更多相关文章
-
[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对照度、亮度处理
前一篇文章讲述了Android拍照.截图.保存并显示在ImageView控件中,该篇文章继续讲述Android图像处理技术,主要操作包含:通过打开相冊里的图片,使用Matrix对图像进行缩放. ...
-
用Java编写的http下载工具类,包含下载进度回调
HttpDownloader.java package com.buyishi; import java.io.FileOutputStream; import java.io.IOException ...
-
矩阵类的python实现
科学计算离不开矩阵的运算.当然,python已经有非常好的现成的库:numpy. 我写这个矩阵类,并不是打算重新造一个*,只是作为一个练习,记录在此. 注:这个类的函数还没全部实现,慢慢在完善吧. ...
-
类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,
编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 ...
-
【CSS3】 理解CSS3 transform中的Matrix(矩阵)
理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...
-
理解CSS3 transform中的Matrix(矩阵)
一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...
-
理解CSS3 transform中的Matrix(矩阵)——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...
-
一个Java文件至多包含一个公共类
编写一个java源文件时,该源文件又称为编译单元.一个java文件可以包含多个类,但至多包含一个公共类,作为编译时该java文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为[公共类 ...
-
OpenGL矩阵类(C++)
概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例:投影矩阵 概述 OpenGL固定功能管线提供4个不同类型的矩阵(GL_MODELVIEW.GL_PROJECTION. ...
随机推荐
-
Graphics平移缩放旋转(转载)+点睛
点睛:可以进行多次旋转和平移,也就是平移以后再平移,旋转以后再旋转,有时候一次达不到要求,如果你想一次调整完美的话很麻烦,所以最好多次,上代码 private void btnTranslate_Cl ...
-
URAL 2048 History 蔡勒公式
HistoryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.acti ...
-
[搜片神器]BT管理程序数据库速度调试优化问题
DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr 谢谢园子 ...
-
sql 数据字段类型
bit 整型 bit数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或False .On 或Off. 注意:很省空间的一种数据类型, ...
-
mysql join 的同时可以筛选数据
看sql ) ) group by a.id; 这里面用了多个子查询,与join关联. 其中 不仅有关联条件,还对sh_mall_goods表进行了筛选,只选出mall_id为9的数据,进行关联. 这 ...
-
Unity遮挡透明渐变
遮挡透明若没有渐变实现方法: 1.透明中物体存在list中 2.每过一段时间(可以每帧,但是流畅性会降低)摄像机发送一条射线向玩家,out hitInfo 3.list与hitInfo比对,将在lis ...
-
0x80070522:客户端没有所需的特权的解决方法(win7,win10通过)
往C盘上粘贴文件的时候提示错误0x80070522:客户端没有所需的特权,解决方法如下: 一般情况下,我们思考的方向肯定是往用户权限方向的,但增加的用户是最高权限的管理员还是不可以.. 暂时还没有 ...
-
css第二天
二丶 1.字体属性font: 字体名称(font-family)字体大小(font-size):pc中通常,字体大小表示为12px,14px.移动设备中通常表示为0.57rem.字体粗细(font-w ...
-
用STS构建spring boot
操作步骤:1. 登录地址http://spring.io/tools 下载sts,spring-tool-suite-3.9.5.RELEASE-e4.8.0-win32-x86_64.zip2. 解 ...
-
LeetCode(75):分类颜色
Medium! 题目描述: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 ...