[Java]编写自己的Matrix矩阵类
用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 ...
- C++实现矩阵类和向量类
C++期末作业内容,写完之后觉得过于臃肿,又重新搞了个新的.新的当作业交,旧的拿来给同学参考. [问题描述]请仿照复数类,设计一个矩阵类,设计矩阵类的构成元素 1.编写构造函数完成初始化 2.编写成员 ...
- 矩阵类的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文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为[公共类 ...
随机推荐
- datagrid指定行合并导出
导出代码: public void GridViewToExcel(GridView ctrl, string FileType, string FileName) { HttpContext.Cur ...
- 20160125--Spring
package com.hanqi; import java.util.*; import com.hanqi.User; public class HelloWorld { public Hello ...
- EC读书笔记系列之12:条款22、23、24
条款22 将成员变量声明为private 记住: ★切记将成员变量声明为private.这可赋予客户访问数据的一致性.可细微划分访问控制.允诺约束条件获得保证,并提供class作者以充分的实现弹性. ...
- velocity 字符串 转化为数字
#set($nPageIndex=$request.getParameter("nIndex")) #set($Integer = 0 ) #set($FrontPageSize= ...
- mac apktool配置
Apktool:http://ibotpeaches.github.io/Apktool/install/ 最新版本2.0.1 dex2jar: https://github.com/pxb1988/ ...
- Unhandled Exxception “Unhandled exception type IOException”?
Unhandled Exxception “Unhandled exception type IOException”? 在Android studio中,自动遇见这个异常报错,如果eclipse会 ...
- js私有化属性
我们先来看一个例子: var Demo1 = function(val){ this.value = val; this.getValue = function(){ return this.valu ...
- 搜索服务器xunsearch实现
安装方法: centos 6.6 64位 histroy: 12 cd /srv/ 13 wget http://www.xunsearch.com/download/xunsea ...
- C++静态库与动态库(简介)
C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一 ...
- 给js文件传递参数
一.利用全局变量 这是最简单的一种方式,比如Google Adsense: <script type="text/javascript"> google_ad_clie ...