【算法】矩阵 的 加、乘、转置
程序员文章站
2022-07-12 20:59:37
...
一、矩阵相加
公式:C[m][n]=A[m][n]+B[m][n];
public class Matrix_Addition {
public static void MattrixAdd(int a[][],int b[][],int c[][],int x,int y)
{
int row,col;
if(x<=0&&y<=0)
{
System.out.printf("矩阵纬数必须大于0");
return ;
}
for( row=1;row<=x;row++ )
{
for (col=1;col<=y;col++)
{
c[(row-1)][(col-1)]=a[(row-1)][(col-1)]+b[(row-1)][(col-1)];
}
}
}
public static void main(String args[])
{
int i,j;
final int rows=3;
final int cols=3;
int [][]a={{1,3,4},{3,3,3},{6,6,6}};
int [][]b={{3,4,5},{2,2,2},{5,5,5}};
int [][]c=new int[rows][cols];
MattrixAdd(a,b,c,3,3);
System.out.println("相加后的c矩阵如下");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
System.out.print(c[i][j]+" ");
}
System.out.println("");
}
}
}
二、矩阵相乘
公式:C[m][p]=A[m][0]*B[0][p]+A[m][1]*B[1][p]+……+A[m][n]*B[n][p];
import java.io.*;
public class Matrix_Multiply {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int M,N1,N2,P;
int i,j;
String strM;
String strN1,strN2;
String strP;
String tempstr;
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请先输入矩阵A的纬数(M,N1)");
System.out.println("请先输入矩阵A的M值:");
strM=keyin.readLine();
M=Integer.parseInt(strM);
System.out.println("请输入矩阵A的N值:");
strN1=keyin.readLine();
N1=Integer.parseInt(strN1);
int A[][]=new int[M][N1];
System.out.println("请输入矩阵A的各个元素");
System.out.println("注意!每一次输入一个值按下Enter键确认输入");
for(i=0;i<M;i++)
{
for(j=0;j<N1;j++)
{
System.out.print("a"+i+j+"=");
tempstr=keyin.readLine();
A[i][j]=Integer.parseInt(tempstr);
}
}
System.out.println("请输入矩阵B的纬数值(N2,P)");
System.out.println("请先输入矩阵B的N2值:");
strN2=keyin.readLine();
N2=Integer.parseInt(strN2);
while(N1!=N2)
{
System.out.println("请保证N1与N2的值相等");
strN2=keyin.readLine();
N2=Integer.parseInt(strN2);
}
System.out.println("请输入矩阵B的P值:");
strP=keyin.readLine();
P=Integer.parseInt(strP);
int B[][]=new int[N2][P];
System.out.println("请输入矩阵A的各个元素");
System.out.println("注意!每一次输入一个值按下Enter键确认输入");
for(i=0;i<N2;i++)
{
for(j=0;j<P;j++)
{
System.out.print("b"+i+j+"=");
tempstr=keyin.readLine();
B[i][j]=Integer.parseInt(tempstr);
}
}
int C[][]=new int[M][P];
MatrixMultiply(A,B,C,M,N2,P);
System.out.println("[AxB结果是]");
for(i=0;i<M;i++)
{
for(j=0;j<P;j++)
{
System.out.print(C[i][j]);
System.out.print('\t');
}
System.out.println();
}
}
public static void MatrixMultiply(int arrA[][],int arrB[][],int arrC[][],int M,int N,int P)
{
int i,j,k,temp = 0;
for(i=0;i<M;i++)
{
for(j=0;j<P;j++)
{
for(k=0;k<N;k++)
{
temp += arrA[i][k]*arrB[k][j];
}
arrC[i][j]=temp;
}
}
}
}
三、转置矩阵
公式:
A[m][n]->At[n][m];
public class zz {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int M,N;
int i,j;
String strM;
String strN;
String tempstr;
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请先输入矩阵A的纬数(M,N)");
System.out.println("请先输入矩阵A的M值:");
strM=keyin.readLine();
M=Integer.parseInt(strM);
System.out.println("请输入矩阵A的N值:");
strN=keyin.readLine();
N=Integer.parseInt(strN);
int A[][]=new int[M][N];
int B[][]=new int[N][M];
System.out.println("请输入矩阵A的各个元素");
System.out.println("注意!每一次输入一个值按下Enter键确认输入");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
System.out.print("a"+i+j+"=");
tempstr=keyin.readLine();
A[i][j]=Integer.parseInt(tempstr);
}
}
System.out.println("[输入矩阵的内容为]\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
System.out.print(A[i][j]);
System.out.print('\t');
}
System.out.println();
}
exchangeT(A,B,M,N);
}
public static void exchangeT(int [][]A,int B[][],int M,int N)
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
B[i][j]=A[j][i];
}
}
System.out.println("[输出转置后的矩阵的内容为]\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
System.out.print(B[i][j]);
System.out.print('\t');
}
System.out.println();
}
}
}
推荐阅读
-
数据算法使给定的一个二维数组(3×3)转置
-
Python 使用Numpy对矩阵进行转置的方法
-
python 实现矩阵上下/左右翻转,转置的示例
-
C#实现矩阵转置的方法
-
对python 矩阵转置transpose的实例讲解
-
Python实现的矩阵转置与矩阵相乘运算示例
-
使用mathematica11软件求解2/3/4阶矩阵的转置矩阵教程
-
C++n阶矩阵求转置矩阵的算法实现
-
20.7.17 笔记算数运算符 复合运算符重载 比较运算重载 多态 设计原则 类的单一职责 依赖倒置 组合复用原则 里氏替换 迪米特法则 矩阵转置原理
-
在python中的实现矩阵的乘法 、矩阵的转置、学习numpy中的矩阵运算方法