精华内容
下载资源
问答
  • 2022-01-06 09:48:37
    #include<stdio.h>
    main()
    {
    	int i,j;
    	int a[3][5];
    	int b[3][5];
    	int c[3][5];
    	printf("请输入矩阵a:\n");
    	for(i=0;i<3;i++)
    	for(j=0;j<5;j++)
    	scanf("%d",&a[i][j]);
    	printf("请输入矩阵b:\n");
    	for(i=0;i<3;i++)
    	for(j=0;j<5;j++)
    	scanf("%d",&b[i][j]);
    	printf("输出结果\n");
    	for(i=0;i<3;i++)
    	{
    	for(j=0;j<5;j++)
    	printf("%d ",a[i][j]);
    	printf("\n");
        }
    	printf("+");
    	printf("\n");
    	for(i=0;i<3;i++)
    	{
    	for(j=0;j<5;j++)
    	printf("%d ",b[i][j]);
    	printf("\n");
        }
    	printf("=");
    	printf("\n");
    	for(i=0;i<3;i++)
    	for(j=0;j<5;j++)
    	c[i][j]=a[i][j]+b[i][j];
    	for(i=0;i<3;i++)
    	{
    	for(j=0;j<5;j++)
    	printf("%d ",c[i][j]);
        printf("\n");
    }
    }

    更多相关内容
  • 矩阵相加

    千次阅读 2019-11-13 22:26:40
    矩阵相加的前提是相加的两个矩阵行数与列数必须相等,而相加后的行数与列数也相同。形式如:Amn+Bmn=Cmn。 代码实现: public static void matrix_add(int[][] arrA,int[][] arrB,int[][] arrC,int dimX,int dimY)...
    • 矩阵相加的前提是相加的两个矩阵行数与列数必须相等,而相加后的行数与列数也相同。形式如:Amn+Bmn=Cmn。

    代码实现:

     public static void matrix_add(int[][] arrA,int[][] arrB,int[][] arrC,int dimX,int dimY){
            int row,col;
            if(dimX<0 || dimY<0){
                System.out.println("矩阵维数必须大于0!");
            }
            for(row=1;row<=dimX;row++){
                for(col=1;col<=dimY;col++){
                    arrC[(row-1)][(col-1)] = arrA[(row-1)][(col-1)]+arrB[(row-1)][(col-1)];
                }
            }
        }
    

    测试类:

     public static void main(String[] args) {
            int i;
            int j;
            final int ROWS = 3;
            final int COLS = 3;
            int[][] A = {{1, 3, 5},{7,9,11},{13,15,17}};
            int[][] B = {{9,8,7},{6,5,4},{3,2,1}};
            int[][] C = new int[ROWS][COLS];
            System.out.println("[矩阵A的各个元素]");
            for(i=0;i<3;i++){
                for(j=0;j<3;j++){
                    System.out.print(A[i][j]+"\t");
                }
                System.out.println();
            }
    
            System.out.println("[矩阵B中的各个元素]");
            for(i=0;i<3;i++) {
                for (j = 0; j < 3; j++) {
                    System.out.print(B[i][j] + "\t");
    
                }
                System.out.println();
            }
            matrix_add(A,B,C,3,3);
            System.out.println("[显示矩阵A和矩阵B相加的结果]");
            for(i=0;i<3;i++){
                for(j=0;j<3;j++){
                    System.out.print(C[i][j]+"\t");
                }
                System.out.println();
            }
        }
    

    运行结果:
    在这里插入图片描述

    展开全文
  • C++ 重载+运算符重载加号 实现矩阵相加  学习C++ 基础知识,这里实现简单的实例,记录下自己学习生活,很简单,大家一起看看吧! 实例代码: #include #include using namespace std; class Complex { private: ...
  • 今天小编就为大家分享一篇对python中矩阵相加函数sum()的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • java实现矩阵相加

    2020-12-23 22:55:26
    简单程序,可提供参考
  • 稀疏矩阵的运算——矩阵相加

    千次阅读 2022-04-13 18:30:15
    南昌航空大学实验报告 课程名称: 数据结构A 实验名称: 实验...数组是一种常用的数据类型,本实验是有关两个稀疏矩阵进行相加的应用。 通过对本实验的学习,可以理解矩阵的相关操作方法。 二、实验内容 在本...

    南昌航空大学实验报告

    课程名称:   数据结构A   实验名称:       实验五    稀疏矩阵运算       

    班   级:     XXX           学生姓名:      XXX         学号:     XXXXX      

    指导教师评定:      XXX     签    名:      XXX    

    一、实验目的

    数组是一种常用的数据类型,本实验是有关两个稀疏矩阵进行相加的应用。

    通过对本实验的学习,可以理解矩阵的相关操作方法。

    二、实验内容

    在本实验的实例程序中,假设两个稀疏矩阵A和B,它们均为m行n列,要求编写求矩阵的加法即C=A+B的算法(C矩阵存放A与B相加的结果)。

    三、程序分析

    我们利用一维数组来存储。一维数组顺序存放非零元素的行号、列号和数值,行号-1作为结束标志。然后在进行矩阵加法运算时依次扫描矩阵A和B的行列值,并以行优先。当行列相同时,将第三个元素值相加的和以及行列号三个元素存入结果数组C中;不相同时,将A或B的三个元素直接存入结果数组中。

    四、程序源代码

    过程见后续,不想看过程的直接拉到底即可。

    编写准备

    首先,看一下稀疏矩阵的概念:

    稀疏矩阵(Sparse Matrix):对于稀疏矩阵,目前还没有一个确切的定义。设矩阵A是一个n´m的矩阵中有s个非零元素,设  δ=s/(n´m),称δ为稀疏因子,如果某一矩阵的稀疏因子δ满足δ≦0.05时称为稀疏矩阵。

    简单说就是一个有大量元素为ling3的数组。

    以及矩阵相加

    一般是指在两个相同大小的矩阵,把其相对应元素加在一起的运算。

    然后审查题目。

    再程序分析中的“当行列相同时,将第三个元素值相加的和以及行列号三个元素存入结果数组C中;不相同时,将A或B的三个元素直接存入结果数组中。”这句话是编写的中心思想。

    设计过程

    定义部分

    简单介绍一下

    对于稀疏矩阵,采用压缩存储方法时,只存储非0元素。必须存储非0元素的行下标值、列下标值、元素值。因此,一个三元组(i, j, aij)唯一确定稀疏矩阵的一个非零元素。

    三元组顺序表相应的数据结构定义如下:

    //⑴ 三元组结点定义   
    #define MAX_SIZE 101
    typedef struct
    {
        int row;//行下标
        int col;//列下标
        ElemType value;//元素值
    }Triple;
    //⑵  三元组顺序表定义
    typedef struct
    {
        int m;//行数
        int n;//列数
        int t;//非0元素个数
        Triple data[MAX_SIZE];
    }TMatrix;

    没有什么可更改的地方,直接拿来即可。

    创建矩阵

    直接上代码

    void create_matrix(TMatrix &s,int M,int N)//矩阵创建
    {
        s.m=M;s.n=N;
        printf("输入非0元素的个数:");
        scanf("%d",&s.t);
        for(int i=1;i<=s.t;i++)
        {
            printf("输入第%d个非0元素的行数、列数以及数值:",i);
            scanf("%d%d%d",&s.data[i].row,&s.data[i].col,&s.data[i].value);
        }
    }

    M代表矩阵行数,N代表列数。

    先输入非0元素的个数,然后依次输入非0元素即可。

    矩阵显示

    因为入的是非零元素组成的矩阵,这里将其变换为普通的矩阵,方便观察现象。

    void disp_matrix(TMatrix s)//矩阵显示
    {
        ElemType A[(s.m)+1][(s.n)+1]={0};//定义二维数组,并使初始值均为0
        for(int temp=1;temp<=s.t;temp++)//非0元素进入数组
            A[s.data[temp].row][s.data[temp].col]=s.data[temp].value;
        for(int i=1;i<=s.m;i++)//显示完整的矩阵
        {
            for(int j=1;j<=s.n;j++)
                printf(" %d",A[i][j]);
            printf("\n");
        }
    }

    定义二维数组时(ElemType A[(s.m)+1][(s.n)+1]={0};)由于是从0开始计的,而创建函数是从1开始计的,为保持统一。

    然后复刻非零元素即可。

    最后输出。

    矩阵相加函数

    void add_matrix(TMatrix a,TMatrix b,TMatrix &c)//矩阵相加
    {
        int temp=1;
        c.m=a.m;c.n=a.n;
        c.t=0;
        for(int i=1;i<=a.t;)
            for(int j=1;j<=b.t;)
            {
                if(a.data[i].row>b.data[j].row)
                {
                    c.data[temp].row=b.data[j].row;
                    c.data[temp].col=b.data[j].col;
                    c.data[temp].value=b.data[j].value;//小的给到c
                    c.t++;//非零元素加一
                    temp++;j++;
                }
                else if(a.data[i].row<b.data[j].row)
                {
                    c.data[temp].row=a.data[i].row;
                    c.data[temp].col=a.data[i].col;
                    c.data[temp].value=a.data[i].value;//小的给到c
                    c.t++;//非零元素加一
                    temp++;i++;
                }
                else //行号相等
                {
                    if(a.data[i].col>b.data[j].col)
                    {
                        c.data[temp].row=b.data[j].row;
                        c.data[temp].col=b.data[j].col;
                        c.data[temp].value=b.data[j].value;//小的给到c
                        c.t++;//非零元素加一
                        temp++;j++;
                    }
                    else if(a.data[i].col<b.data[j].col)
                    {
                        c.data[temp].row=a.data[i].row;
                        c.data[temp].col=a.data[i].col;
                        c.data[temp].value=a.data[i].value;//小的给到c
                        c.t++;//非零元素加一
                        temp++;i++;
                    }
                    else //列号也相等
                    {
                        c.data[temp].row=a.data[i].row;
                        c.data[temp].col=a.data[i].col;
                        c.data[temp].value=a.data[i].value+b.data[j].value;//加和并给到c
                        c.t++;//非零元素加一
                        temp++;i++;j++;
                    }
                }
            }
    }

    拿出程序分析中的“当行列相同时,将第三个元素值相加的和以及行列号三个元素存入结果数组C中;不相同时,将A或B的三个元素直接存入结果数组中。”。要对比行列。

    如果矩阵a和b同一位置上都有非零元素,则相加。

    反之则直接给到c。

    实现起来的话,先判断a和b的非零元素的行数,小的那个给到c,然后跳到下一元素。(如b的非零元素的行数小,则将b的非零元素的行、列和值给到c,然后跳到b的下一非零元素)。

    然后再判断列数。

    如若行数和列数都相等,将a的非零元素的值和b的相加,再给到c即可。

    最后是主函数

    int main()
    {
        TMatrix a,b,c;
        int M,N;//m:行数 n:列数
        printf("输入矩阵行数:");scanf("%d",&M);
        printf("输入矩阵列数:");scanf("%d",&N);
        printf("创建矩阵a:");create_matrix(a,M,N);
        printf("完整的矩阵a:\n");disp_matrix(a);
        printf("创建矩阵b:");create_matrix(b,M,N);
        printf("完整的矩阵b:\n");disp_matrix(b);
        add_matrix(a,b,c);
    
        printf("非零元素矩阵c:非零元素共有%d个\n行下标 列下标 元素值\n",c.t);
        for(int i=1;i<=c.t;i++)
            printf("  %d      %d      %d\n",c.data[i].row,c.data[i].col,c.data[i].value);
    
        printf("完整的矩阵c:\n");disp_matrix(c);
        return 0;
    }

    源代码:

    #include<stdio.h>
    #include<stdlib.h>
    #define ElemType int
    #define MAX_SIZE 101
    typedef struct
    {
        int row;//行下标
        int col;//列下标
        ElemType value;//元素值
    }Triple;
    typedef struct
    {
        int m;//行数
        int n;//列数
        int t;//非0元素个数
        Triple data[MAX_SIZE];
    }TMatrix;
    void create_matrix(TMatrix &s,int M,int N)//矩阵创建
    {
        s.m=M;s.n=N;
        printf("输入非0元素的个数:");
        scanf("%d",&s.t);
        for(int i=1;i<=s.t;i++)
        {
            printf("输入第%d个非0元素的行数、列数以及数值:",i);
            scanf("%d%d%d",&s.data[i].row,&s.data[i].col,&s.data[i].value);
        }
    }
    void add_matrix(TMatrix a,TMatrix b,TMatrix &c)//矩阵相加
    {
        int temp=1;
        c.m=a.m;c.n=a.n;
        c.t=0;
        for(int i=1;i<=a.t;)
            for(int j=1;j<=b.t;)
            {
                if(a.data[i].row>b.data[j].row)
                {
                    c.data[temp].row=b.data[j].row;
                    c.data[temp].col=b.data[j].col;
                    c.data[temp].value=b.data[j].value;//小的给到c
                    c.t++;//非零元素加一
                    temp++;j++;
                }
                else if(a.data[i].row<b.data[j].row)
                {
                    c.data[temp].row=a.data[i].row;
                    c.data[temp].col=a.data[i].col;
                    c.data[temp].value=a.data[i].value;//小的给到c
                    c.t++;//非零元素加一
                    temp++;i++;
                }
                else //行号相等
                {
                    if(a.data[i].col>b.data[j].col)
                    {
                        c.data[temp].row=b.data[j].row;
                        c.data[temp].col=b.data[j].col;
                        c.data[temp].value=b.data[j].value;//小的给到c
                        c.t++;//非零元素加一
                        temp++;j++;
                    }
                    else if(a.data[i].col<b.data[j].col)
                    {
                        c.data[temp].row=a.data[i].row;
                        c.data[temp].col=a.data[i].col;
                        c.data[temp].value=a.data[i].value;//小的给到c
                        c.t++;//非零元素加一
                        temp++;i++;
                    }
                    else //列号也相等
                    {
                        c.data[temp].row=a.data[i].row;
                        c.data[temp].col=a.data[i].col;
                        c.data[temp].value=a.data[i].value+b.data[j].value;//加和并给到c
                        c.t++;//非零元素加一
                        temp++;i++;j++;
                    }
                }
            }
    }
    void disp_matrix(TMatrix s)//矩阵显示
    {
        ElemType A[(s.m)+1][(s.n)+1]={0};//定义二维数组,并使初始值均为0
        for(int temp=1;temp<=s.t;temp++)//非0元素进入数组
            A[s.data[temp].row][s.data[temp].col]=s.data[temp].value;
        for(int i=1;i<=s.m;i++)//显示完整的矩阵
        {
            for(int j=1;j<=s.n;j++)
                printf(" %d",A[i][j]);
            printf("\n");
        }
    }
    int main()
    {
        TMatrix a,b,c;
        int M,N;//m:行数 n:列数
        printf("输入矩阵行数:");scanf("%d",&M);
        printf("输入矩阵列数:");scanf("%d",&N);
        printf("创建矩阵a:");create_matrix(a,M,N);
        printf("完整的矩阵a:\n");disp_matrix(a);
        printf("创建矩阵b:");create_matrix(b,M,N);
        printf("完整的矩阵b:\n");disp_matrix(b);
        add_matrix(a,b,c);
    
        printf("非零元素矩阵c:非零元素共有%d个\n行下标 列下标 元素值\n",c.t);
        for(int i=1;i<=c.t;i++)
            printf("  %d      %d      %d\n",c.data[i].row,c.data[i].col,c.data[i].value);
    
        printf("完整的矩阵c:\n");disp_matrix(c);
        return 0;
    }
    

    运行结果:

    展开全文
  • 在学习《数据结构(C语言版)》中第五章稀疏矩阵时,课本提示使用十字链表实现矩阵相加,没能运行,于是自己调试实现了下,希望对大家有帮助
  • C语言数据结构之两个稀疏矩阵相加。代码中代码功能描述、输入输出说明和测试输出输入。
  • python 实现矩阵相加

    2022-06-09 15:50:14
    # 题目:计算两个矩阵相加。 # 程序分析:创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。
  • Java、两个矩阵相加

    2022-03-08 15:35:56
    编写两个矩阵相加的方法:public static double[][] addMatrix(double[][] a, double[][] b) 编写一个测试程序,提示用户输入两个3 *3的矩阵,然后显示它们的和。 测试数据: Enter matrix1: 1 2 3 4 5 6 7 8 9 ...

    编写两个矩阵相加的方法:
            public static double[][] addMatrix(double[][] a, double[][] b)
    编写一个测试程序,提示用户输入两个3 * 3的矩阵,然后显示它们的和。


    测试数据: 

    Enter matrix1: 1 2 3 4 5 6 7 8 9
    Enter matrix2: 0 2 4 1 4.5 2.2 1.1 4.3 5.2


    package pack2;
    
    import java.util.Scanner;
    
    public class TwoMatrixSum {
    
    	public static void main(String[] args) {
    		try(Scanner input = new Scanner(System.in);) {
    			double[][] a = new double[3][3];
    			double[][] b = new double[3][3];
    			
    			System.out.print("Enter matrix1: ");
    			for (int i = 0; i < a.length; i++) 
    				for (int j = 0; j < a.length; j++) 
    					a[i][j] = input.nextDouble();
    			
    			System.out.print("Enter matrix2: ");
    			for (int i = 0; i < a.length; i++) 
    				for (int j = 0; j < a.length; j++) 
    					b[i][j] = input.nextDouble();
    			
    			printMatrix(a, b, addMatrix(a, b), '+');
    		}
    	}
    
    	/**两个矩阵相加*/
    	public static double[][] addMatrix(double[][] a, double[][] b) {
    		double[][] sum = new double[a.length][a.length];
    		
    		for (int i = 0; i < sum.length; i++) 
    			for (int j = 0; j < sum.length; j++) 
    				sum[i][j] = a[i][j] + b[i][j];
    		
    		return sum;
    	}
    	
    	/**打印矩阵*/
    	public static void printMatrix(double[][] a, double[][] b, double[][] c, char op) {
    		for (int i = 0; i < c.length; i++) {
    			for (int j = 0; j < c.length; j++) 
    				System.out.printf("%5.1f", a[i][j]);
    			
    			if(i == c.length / 2)
    				System.out.print("   "+op+" ");
    			else
    				System.out.print("     ");
    			
    			for (int j = 0; j < c.length; j++) 
    				System.out.printf("%5.1f", b[i][j]);
    			
    			if(i == c.length / 2)
    				System.out.print("  = ");
    			else
    				System.out.print("    ");
    			
    			for (int j = 0; j < c.length; j++) 
    				System.out.printf("%5.1f", c[i][j]);
    			System.out.println();
    		}
    	}
    }
    

    展开全文
  • Python——矩阵相加(采用矩阵相加数学计算方法实现)(tkinter实现)1.addmatrix.py2.结果示例 CSDN用户(TDTX),TDTX主页 CSDN用户(philo42),philo42主页 【矩阵相乘】采用线性代数中,计算矩阵相乘的方法实现...
  • Java 将两个矩阵相加

    2021-03-08 16:45:04
    import java.util.Scanner;public class Main {//N o w J a v a . c o m - 时代Java 提 供public static int[][] mMatrixSum(int mArrayA[][], int mArrayB[][]) {int i, j;int mRows = mArrayA.length;...
  • 方法头如下: public static double[][] addMatrix(double[][] a, double[][]...public class _016_矩阵相加 { public static void main(String[] args) { double[][] matrix1= new double[4][4]; double[][] matr
  • Java程序对两个矩阵相加

    千次阅读 2021-04-24 15:48:34
    Java程序对两个矩阵相加我们可以使用二进制+运算符在Java中对两个矩阵进行相加。矩阵也称为数组数组。我们可以加,减和乘矩阵。要减去两个矩阵,请使用-运算符。让我们看一个简单的示例,对两个3行3列的矩阵进行相加...
  • 稀疏矩阵相加(C语言)

    千次阅读 2021-03-30 10:56:12
    今天整了下稀疏矩阵相加,不是很难; 题目: 话不多说,代码如下: #include<stdio.h> #include<stdlib.h> #define MAXSIZE 1000 typedef struct{ int row;//第几行 int col;//第几列 int e;//存储的...
  • python 矩阵相加 正整数n,代表要输入的是n*n的矩阵,两个矩阵由用户输入,计算输出两个矩阵相加的和。
  • PYTHON--三阶矩阵相加

    2022-04-17 17:44:00
    python对于矩阵的运算。简单的方法,快速实现。并可延申至多维矩阵的计算
  • C++实现矩阵相乘和相加运算 这里只实现了N * N矩阵相加和相乘,如果想要实现N*M 和 M*S矩阵相乘,得到N*S矩阵,只需要将乘法的i,j改成N和S的值,k对应的是M的值 #include <iostream> #define N 3 using...
  • 两个矩阵相加后求逆

    万次阅读 多人点赞 2019-11-12 18:02:37
    如何计算两个矩阵相加后求逆 Householder公式指出如果A是非奇异矩阵,x,y是向量,他们所有的阶数都是n,如果 是非奇异的,那么
  • c++使用vector实现两个矩阵相加 直接上代码 #include <vector> vector<vector<double>> matrix_add(vector<vector<double>> m, vector<vector<double>> n) { //矩阵...
  • **题目:**计算两个矩阵相加。 **程序分析:**创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。 X = [[12,7,3], [4 ,5,6], [7 ,8,9]] Y = [[5,8,1], [6,7,...
  • 2、用运算符重载的方法实现两个矩阵对象的相加,矩阵相加是指两个矩阵的每个位置上的两个元素相加 3、用构造函数实现对象的初始化,用输出函数实现矩阵的输出。提示:在构造函数内做输入可以减少很多麻烦 整数指针...
  • C# 矩阵相加代码

    千次阅读 2019-11-19 21:29:33
    两个矩阵相加的过程,并显示两个矩阵相加后的结果: using System; namespace MatrixAdd { class Program { static void MatrixAdd(int[,] arrA, int[,] arrB, int[,] arrC, int dimX, int dimY) { int...
  • CUDA:并行计算实现矩阵相加

    千次阅读 多人点赞 2018-10-18 21:58:29
    完成矩阵相加的并行程序的实现(不用share memory实现) 要求: 实现2个矩阵(32*32)的相加,M矩阵的初始值全为2,N矩阵的初始值全为5。同时用CPU代码实现,比较两个代码的运行时间 实现2个矩阵(1024*1024)的...
  • 数据是一个二维矩阵,但是在这里你可以用一个索引来访问它。data[k]因此是一整行,使用+可以连接行(可能不是您想要的,对吗?)。可能highBandWidth的解决方案正是您所寻找的。在第二个问题更微妙,是关于陈述^{pr2}$...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,030
精华内容 26,812
关键字:

矩阵相加

友情链接: GPR-高斯过程回归.rar