java数据建模_数据建模

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public class Test2 {

static double[][] matrixX1;

static double[][] matrixX2;

static double[][] matrixX3;

static double[][] matrixX4;

static double[][] matrixX5;

public static void main(String[] args) {

Test2 test = new Test2();

matrixX1 = new double[][] { { -2969.1, 1039, 2307.75 }, { 3801.8, 1189.7, 2504.47 },

{ 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 } };// 5*3矩阵

matrixX2 = new double[][] { { -2969.1, 1039, 2307.75 }, { 3801.8, 1189.7, 2504.47 },

{ 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 } };

matrixX3 = new double[][] { { -2969.1, 1039, 2307.75 }, { 3801.8, 1189.7, 2504.47 },

{ 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 } };

matrixX4 = new double[][] { { -2969.1, 1039, 2307.75 }, { 3801.8, 1189.7, 2504.47 },

{ 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 } };

matrixX5 = new double[][] { { -2969.1, 1039, 2307.75 }, { 3801.8, 1189.7, 2504.47 },

{ 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 }, { 3801.8, 1189.7, 2504.47 } };

double[][] MarA = new double[][] { { 0.6 }, { 0.25 }, { 0.15 } };//3*1矩阵

Field[] fields = Test2.class.getDeclaredFields();

System.out.println(fields.length);

List list = new ArrayList();

for(Field f:fields){

f.setAccessible(true);

try {

double[][] obj =(double[][])f.get(test);

list.add(plus(generateRmamatrix(obj),MarA));

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

printResult(list);

}

// 输出结果最终结果

private static void printResult(List list) {

for (int i = 0; i < list.size(); i++) {

for (int j = 0; j < list.get(i).length; j++) {

System.out.println(Arrays.toString(list.get(i)[j]));

}

if(i!=list.size()-1){

System.out.println("==================");

}

}

}

// 假设是m行n列

private static double[][] generateRmamatrix(double[][] matrixX) {

double[][] r = new double[matrixX.length][matrixX[0].length];

for (int i = 0; i < r.length; i++) {

for (int j = 0; j < r[0].length; j++) {

r[i][j] = 0;

double sumLie = 0;

for (int k = 0; k < matrixX.length; k++) {

sumLie += matrixX[k][j];// 每一列求和

}

r[i][j] = matrixX[i][j] / sumLie;

sumLie = 0;

}

}

return r;

}

/*

* 矩阵相乘 传入两个数组

*/

private static double[][] plus(double[][] matrix1, double[][] matrix2) {

if (matrix1[0].length != matrix2.length) {// 若无法相乘则退出 行===列

System.out.println("ivalid input");

}

double[][] plus = new double[matrix1.length][matrix2[0].length];

for (int i = 0; i < plus.length; ++i) {

for (int j = 0; j < plus[i].length; ++j) {// 每一个plus[i][j]的运算:

plus[i][j] = 0;// 初始化

for (int k = 0; k < matrix2.length; ++k)

plus[i][j] += matrix1[i][k] * matrix2[k][j];

}

}

return plus;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值