用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. [Android] 使用Matrix矩阵类对图像进行缩放、旋转、对照度、亮度处理

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

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

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

  3. C++实现矩阵类和向量类

    C++期末作业内容,写完之后觉得过于臃肿,又重新搞了个新的.新的当作业交,旧的拿来给同学参考. [问题描述]请仿照复数类,设计一个矩阵类,设计矩阵类的构成元素 1.编写构造函数完成初始化 2.编写成员 ...

  4. 矩阵类的python实现

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

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

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

  6. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)

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

  7. 理解CSS3 transform中的Matrix(矩阵)

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

  8. 理解CSS3 transform中的Matrix(矩阵)——张鑫旭

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

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

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

随机推荐

  1. Android Studio的配置

    第一次使用Android Studio时你应该知道的一切配置 - 生命壹号 - 博客园http://www.cnblogs.com/smyhvae/p/4390905.html

  2. ##DAY3 自定义视图、视图控制器、视图控制器指定视图、loadView、 viewDidLoad、MVC、屏幕旋转、内存警告

    ##DAY3 自定义视图.视图控制器.视图控制器指定视图.loadView. viewDidLoad.MVC.屏幕旋转.内存警告 #pragma mark ———————自定义视图的步骤 —————— ...

  3. (转载)JS中的prototype

    原文地址:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html#!comments JS中的phototype是JS中比较难理解的 ...

  4. nginx负载均衡配置(转)

    www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP. 用户访问http://www.s135.com,将其负载均衡到192.168.1.2:80.192 ...

  5. 数字时钟DigClock

    首先建立数字显示类: using System; using System.Drawing; namespace CsDev { class SevenSegmentDispay { Graphics ...

  6. Docker的C/S模式详解

    Docker的C/S模式 Docker的C/S模式 Docker Client通过Remote API与Docker Server通信: RESTful风格API STDIN.STDOUT.STDER ...

  7. function(ev) //括号里的ev是什么东西,什么意思?

    事件对象: 楼上的不要误导新人 ev是我们获取事件详细信息的event是IE的写法 大多数人是写window.event 其实区别也差不多 好像window.event更安全些 我也不记得了 火狐呢 ...

  8. Storm csdn

    blog.csdn.net/lonelytrooperblog.csdn.net/leytton http://my.oschina.net/apdplat/blog/308396

  9. Delphi OleVariant 类型的用法

    因客户需求,对客户的指纹机与公司产品进行集成,需要对指纹机做接口的二次开发,郁闷的是产商只提供了VB和C的DEMO示例,没有Delphi的,公司没有VB,C的环境,不能打开这二种语言的示例,因为本公司 ...

  10. Xamarin生成的APK大小分析

    原文:Xamarin生成的APK大小分析 刚接触Xamarin都会被Xamarin的售价吓一跳,另外就是它生成的APK大小,官方也有相关的说明,这里加上自己的理解同意讲解下: 以下是针对Android ...