//矩阵相乘
public double[][] multiplyMatrix(double[][] a,double[][] b){
if(a[0].length != b.length) {
return null;
}
double[][] c=new double[a.length][b[0].length];
for(int i=0;i<a.length;i++) {
for(int j=0;j<b[0].length;j++) {
for(int k=0;k<a[0].length;k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
return c;
}
//矩阵相减
public double[][] MatrixSubt(double[][]A,double[][] B){
if (A.length != B.length || A[0].length != B[0].length )
{
return (null);
}
double[][]C=new double[A.length][A[0].length];
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A[0].length;j++)
{
C[i][j]=A[i][j]-B[i][j];
}
}
return C;
}
//矩阵相加
public double[][] MatrixAdds(double[][]A,double[][] B){
if (A.length != B.length || A[0].length != B[0].length )
{
return (null);
}
double[][]C=new double[A.length][A[0].length];
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A[0].length;j++)
{
C[i][j]=A[i][j]+B[i][j];
}
}
return C;
}
//数组中元素求和
public double ArrayNumberSum(double[][]A){
if (A.length != 1 )
{
return (-1000);
}
double sum = 0;
double[][]C=new double[A.length][A[0].length];
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A[0].length;j++)
{
sum = sum + A[i][j];
}
}
return sum;
}
//提取矩阵某一行数据
public double[][] MatrixRow(double[][]A,int row){
double[][] data = new double[1][A[0].length];//new一个一维数组,长度是二维数组列的个数
for(int i=0;i<A[row].length;i++){//这里获取二维数组 行的值
data[0][i]=A[row][i];//赋值给一维数组
}
return data;
}
//提取矩阵某一列数据
public double[][] MatrixColumn(double[][]A,int column){
double[][] data = new double[A.length][1];//new一个一维数组,长度是二维数组列的个数
for(int i=0;i<A.length;i++){//这里获取二维数组 行的值
data[i][0]=A[i][column];//赋值给一维数组
}
return data;
}
//矩阵相加
public double[][] MatrixAdds(double[][]A,double[][] B){
if (A.length != B.length || A[0].length != B[0].length )
{
return (null);
}
double[][]C=new double[A.length][A[0].length];
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A[0].length;j++)
{
C[i][j]=A[i][j]+B[i][j];
}
}
return C;
//数组中对应位置数据相乘
public double[][] multiplyArray(double[][] a,double[][] b){
if(a.length != b.length || a[0].length != b[0].length ) {
return null;
}
double[][] c=new double[a.length][b[0].length];
for(int i=0;i<a.length;i++) {
for(int j=0;j<b[0].length;j++) {
c[i][j] = a[i][j] * b[i][j];
}
}
return c;
}
//对数据进行转置
public static double[][] tfunction(double[][] test){
int m=test.length;
int n=test[0].length;
double t[][]=new double[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
t[i][j]=test[j][i];
}
}
return t;
}