java 矩陣相乘 矩陣相加/相減 陣列相乘 陣列相減 資料轉置等函式
阿新 • • 發佈:2019-01-01
//矩陣相乘 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;
}