矩阵的加法和减法很简单,唯一的要求就是:行列相等
首先我们看一维的相加(其实就是数组的相加):
/**
* 两个一维数组相加
*
* @param args
* 参数a,b是两个浮点型(double)的一维数组
* @return 返回值是一个浮点型一维矩阵
*/
public static double[] plus(double[] a, double[] b) {
int hang = a.length;
double[] result = new double[hang];
for (int i = 0; i < hang; i++) {
result[i] = a[i] + b[i];
}
return result;
}
打印一维数组:
public static void print_array(double[] result){
for(int i=0;i<result.length;i++){
System.out.print("\t" + result[i]);
}
System.out.println();
}
二维数组的相加:
/**
* 矩阵相加的函数
*
* @param args
* 参数a,b是两个浮点型(double)的二维数组
* @return 返回值是一个浮点型二维数组(矩阵a与b的和)
*/
public static double[][] plus(double[][] a, double[][] b) {
int hang = a.length;
int lie = a[0].length;
double[][] result = new double[hang][lie];
for (int i = 0; i < hang; i++) {
for (int j = 0; j < lie; j++) {
result[i][j] = a[i][j] + b[i][j];
}
}
return result;
}
矩阵相减:
/**
* 矩阵相减的函数
*
* @param args
* 参数a,b是两个浮点型(double)的二维数组,
* @return 返回值是一个浮点型二维数组(矩阵a与b的差)
*/
public static double[][] minus(double[][] a, double[][] b) {
int hang = a.length;
int lie = a[0].length;
double[][] result = new double[hang][lie];
for (int i = 0; i < hang; i++) {
for (int j = 0; j < lie; j++) {
result[i][j] = a[i][j] - b[i][j];
}
}
return result;
}
测试代码:
public static void main(String[] args) {
double[] a = { 3, 2, 1, 4};
double[] b = { 5, 6, 9, 8};
double[] s_test = plus(a,b);
double[][] d_a = new double[][]{{1,2},{3,4}};
double[][] d_b = new double[][]{{7, 8}, {6, 5}};
double[][] d_test = plus(d_a,d_b);
double[][] minus_test=minus(d_a,d_b);
System.out.println("一维相加");
System.out.println("--------------------------------");
print_array(s_test);
System.out.println("矩阵相加");
System.out.println("--------------------------------");
print(d_test);
System.out.println("矩阵相减");
System.out.println("--------------------------------");
print(minus_test);
}
输出结果:
一维相加
--------------------------------
8.0 8.0 10.0 12.0
矩阵相加
--------------------------------
8.0 10.0
9.0 9.0
矩阵相减
--------------------------------
-6.0 -6.0
-3.0 -1.0
最基本的操作:加和减 还是要说的。很简单
只是想说明一点:我看过很多网上的代码,有的人在加法和减法中把结果直接存在
第一个参数中返回,这让我很是犹豫,我常常会想到交换函数时并没有改变他们的值
或者是当同一个参数同时调用两个矩阵方法时,发现了a和b都变了,让我很是气恼
故而我觉得还是在代码中再定义一个局部变量比较好,尽管这样的代码不够优化,但是我看的很清楚。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有