[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文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为[公共类 ...
随机推荐
- JS控制静态页面之间传递参数获取参数并应用
在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a ...
- 字符数组什么时候要加‘\0’
当字符数组以单个字符进行赋值时: char ch[10]; ch[10]={'a','b',---'\0'}; 或者用for循环进行赋值时: for (i=0; i<9; i++){ch[i]= ...
- 幻世(OurDream)2D图形引擎易语言汉化版更新提示
幻世引擎的易语言汉化专版到目前为止已经累积了多个BUG,其中多个BUG是影响引擎功能使用的问题,我将会在近期发布修复所有问题的更新版本(此更新版本同时也将会支持最新的对加入的粒子系统的支持),敬请各位 ...
- css中em与px
Px是绝对定位 em是相对定位 1. em的值并不是固定的: 2. em会继承父级元素的字体大小. em应用: 1. body选择器中声明Font-size=62.5%:(注:在ie中把body选 ...
- JQuerry 权威指南的都市笔记
jquery 如今发展成集javascript.css.DOM .Ajax于一体的强大框架体系.他的主旨是以更少的代码,实现更多的功能(write less,do more) jquery 的进本功 ...
- Python 字符串格式化示例
先看代码吧. #!/usr/bin/env python #-*- coding: utf-8 -*- __author__ = 'jiang' __creattime__ = '2015/10/31 ...
- asp.net内置对象session和cookie
1.各个机器的session对象不同,不同浏览器之间不通用(换个浏览器,是个新的session). 2.session状态对象起始于网页打开,终止于网页关闭,生命周期有限. 3.关闭浏览器/超时的情况 ...
- wifi相关协议
IEEE 802.11Wi-Fi 协议摘要 协议 频率 信号 最大,数据率 传统802.11 2.4GHz FHSS或DSSS 2Mbps 802.11a 5GHz OFDM 54Mbps 802.1 ...
- ARM Cortex-M3内核的巨大优势
ARM Cortex-M3相比于ARM其他系列微控制器,具有以下优势或特点: 1. 三级流水线+分支预测 ARM Cortex-M3与ARM7内核一样,采用适合于微控制器应用的三级流水线,但增加了分支 ...
- c# webBrowser 获取Ajax信息 .
c#中 webbrowser控件对Ajax的执行,没有任何的响应,难于判断Ajax是否已经执行完毕,我GG了一下午,找到一个方法,介绍一下: 假如在页面中有个<div id=result> ...