精华内容
下载资源
问答
  • 矩阵的加法
    千次阅读
    2019-12-05 14:46:16

    题目描述:

    输入两个 n m 列的矩阵 A  B,输出它们的和  A+B

    输入格式

    第一行包含两个整数 n  m,表示矩阵的行数和列数。1 ≤n ≤ 100 1≤m≤100

    接下来 n 行,每行 m 个整数,表示矩阵 A 的元素。

    接下来 n 行,每行 m 个整数,表示矩阵 B 的元素。

    相邻两个整数之间用单个空格隔开,每个元素均在 11 ~ 10001000 之间。

    输出格式

    n 行,每行 m 个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。

    输出时每行末尾的多余空格,不影响答案正确性

    样例输入

    3 3

    1 2 3

    1 2 3

    1 2 3

    1 2 3

    4 5 6

    7 8 9

    样例输出

    2 4 6

    5 7 9

    8 10 12

    
    	public static void main(String[] args) {
    		Scanner s =new Scanner(System.in);
    		int n =s.nextInt();
    		int m =s.nextInt();
    		int A[][] =new int [n][m];
    		int B[][] =new int [n][m];
    		int C[][] =new int [n][m];
    			for(int j=0;j<n;j++) {
    				for(int k =0;k<m;k++) {
    					A[j][k] =s.nextInt();
    			}
    		}
    			for(int j=0;j<n;j++) {
    				for(int k =0;k<m;k++) {
    					B[j][k] =s.nextInt();
    			}
    		}
    			
    			for(int j=0;j<n;j++) {
    				for(int k =0;k<m;k++) {
    					C[j][k] = A[j][k]+B[j][k];
    			}
    		}
    			for(int j=0;j<n;j++) {
    				for(int k =0;k<m;k++) {
    					System.out.print(C[j][k]+" ");
    			}
    				System.out.println();
    		}
    
    	}
    

    对每一个数组进行循环赋值,赋值之后在进行一次遍历将结果储存到另一个数组中。

    更多相关内容
  • C语言矩阵运算器,实现矩阵加法、减法、乘法、转置和退出。
  • 本文实例讲述了Python实现矩阵加法和乘法的方法。分享给大家供大家参考,具体如下: 本来以为python的矩阵用list表示出来应该很简单可以搞。。其实发现有大学问。 这里贴出我写的特别不pythonic的矩阵加法,作为反例...
  • 1.8编程基础之多维数组_08矩阵加法(B) 1.8编程基础之多维数组_08矩阵加法(B)
  • 基于FPGA的矩阵加法

    2015-06-23 09:47:18
    该代码是基于FPGA的矩阵加法器的代码,用VHDL编写,可以很方便的进行修改成任意矩阵加法,移植性好
  • opencl实现矩阵加法

    2019-11-06 12:16:46
    opencl实现矩阵加法,非常适合初学者学习使用,能够全面了解OpenCL的运行原理,本实验环境ubuntu+NVIDIA CUDA8.0,关于环境配置可以查看我的博文。
  • 2.【题目】建立一个类Matrix实现对M行,N列矩阵加法运算。 3.【题目】分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果...
  • 本代码主要利用MATLAB工具实现MATLAB——符号矩阵加法,简单明了,易于理解
  • 矩阵加法运算

    千次阅读 2021-02-18 19:49:42
    矩阵加法运算 问题描述 将稀疏矩阵A的非零元以行序为主序的顺序存于一维数组V中,并用二维数组B表示A中的相应元素是否为零元素,例如: [1500220−6009000](矩阵A) \left[ \begin{matrix} 15 &...

    问题描述

    将稀疏矩阵A的非零元以行序为主序的顺序存于一维数组V中,并用二维数组B表示A中的相应元素是否为零元素,例如:
    [ 15 0 0 22 0 − 6 0 0 9 0 0 0 ] (矩阵A) \left[ \begin{matrix} 15 & 0 & 0 & 22 \\ 0 & -6 & 0 & 0 \\ 9 & 0 & 0 & 0 \\ \end{matrix} \right] \tag{矩阵A} 15090600002200(A)

    可用 V = (15 , 22 , -6 , 9)
    [ 1 0 0 1 0 1 0 0 1 0 0 0 ] (矩阵B) \left[ \begin{matrix} 1&0&0&1\\ 0&1&0&0\\ 1&0&0&0\\ \end{matrix} \right] \tag{矩阵B} 101010000100(B)
    编程实现上述表示法的矩阵加法运算。

    输入格式

    首先输入两个整数n和m,为矩阵维数,然后输入两个矩阵的值B1、V1和B2、V2。

    输出格式

    输出矩阵运算结果B、V。

    样例输入

    3 4
    1 0 0 1
    0 1 0 0
    1 0 0 0
    15 22 -6 9
    0 1 1 0
    0 1 1 0
    1 0 0 1
    3 2 6 2 -5 8

    样例输出

    1 1 1 1
    0 0 1 0
    1 0 0 1
    15 3 2 22 4 8

    提示

    定义矩阵结构体,成员变量包括行数、列数、有效元素个数、单位矩阵、有效元素

    C语言代码实现

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    #define MAXSIZE 10 //规定矩阵行数和列数最大值
    #define ERROR -1 //定义ERROR宏名
    #define OK 1 //定义OK宏名
    typedef int Status; //重命名int类型
    typedef struct Matrix
    {//定义矩阵结构体
    	int i,j,tn; //i表示行,j表示列,tn表示有效元素数量
    	int range[MAXSIZE][MAXSIZE]; //表示矩阵代表的单位矩阵
    	int *data; //存放有效元素的数组
    }Matrix;
    
    Status CreatMatrix (Matrix *M , int i , int j); //创建矩阵
    Status AddMatrix (Matrix M, Matrix N, Matrix &Q); //矩阵加法运算
    
    int main()
    {
    	int i,j,m,n,r; //i表示行,j表示列,m、n、r、变量进行for循环
    	printf("请输入矩阵行数,列数:\n");
    	scanf("%d %d",&i,&j);
    	Matrix M,N,Q;
    	CreatMatrix (&M,i,j);
    	CreatMatrix (&N,i,j);	
    	AddMatrix (M,N,Q);
    	printf("加法矩阵:\n");
    	for(m=0; m<i; m++)
    	{//遍历输出结果矩阵Q的单位矩阵
    		for(n=0; n<j; n++)
    			printf("%d ",Q.range[m][n]);
    		printf("\n");
    	}
    	for(r=0; r<Q.tn; r++)
    		printf("%d ",Q.data[r]); //遍历输出有效元素
    		
    	return 0;
    }
    
    Status CreatMatrix (Matrix *M , int i , int j)
    {//创建i行j列的矩阵M
    	int m,n,r,cont=0; //cont变量记录有效元素的个数
    	printf("请输入单位矩阵:\n");
    	for(m=0; m<i; m++)
    		for(n=0; n<j; n++)
    		{//双重循环输入单位矩阵,并累计有效元素个数
    			scanf("%d",&M->range[m][n]);
    			if(M->range[m][n] == 1)
    				cont++;
    		}
    	
    	M->data = (int*)malloc(cont*sizeof(int));
    	if(!M->data)
    		return ERROR;
    
    	printf("请输入有效值:\n");
    	for(r=0; r<cont; r++) //循环输入有效元素
    		scanf("%d",&M->data[r]);
    	M->i = i; 
    	M->j = j;
    	M->tn = cont;	
    	return OK;
    }
    
    Status AddMatrix (Matrix M, Matrix N, Matrix &Q)
    {//Q = M + N;矩阵的加法运算
    	int m,n,p,q,r,Mt,Nt,val;
    	Mt = Nt = val = 0;
    	Q.data = (int*)malloc(M.i*M.j*sizeof(int));
    	if(!Q.data)
    		return ERROR;
    
    	Q.i = M.i;
    	Q.j = M.j;
    	Q.tn = 0;
    	
    	for(m=0; m<M.i; m++ )
    		for(n=0; n<M.j; n++)
    		{//得到矩阵M,range二维数组由单位矩阵变成矩阵
    			if( M.range[m][n] == 1)
    			{
    				M.range[m][n] = M.range[m][n]*M.data[Mt]; 
    				Mt++;
    			} 
    				
    		}
    	
    	for(p=0; p<N.i; p++)
    		for(q=0; q<N.j; q++)
    		{//得到矩阵N
    			if( N.range[p][q] )
    			{
    				N.range[p][q] = N.range[p][q]*N.data[Nt];
    				Nt++;
    			}
    		}
    	
    	for(m=0; m<M.i; m++)
    		for(n=0; n<M.j; n++)
    		{//矩阵M和矩阵N的二维数组对应位置元素相加,得到矩阵Q
    			val = M.range[m][n] + N.range[m][n];
    			if(val) //如果相加值不为0
    			{
    				Q.data[Q.tn] = val; //记录进矩阵Q的data数组
    				Q.range[m][n] = 1; //更新矩阵Q的range数组为单位矩阵
    				Q.tn++; //有效元素个数更新
    			}
    			else //如果相加值为0
    				Q.range[m][n] = 0;
    		}
    	return OK;	
    }
    
    

    调试

    1. 编写代码过程注意细节,特别是循环编写
    2. 先利用printf函数从主函数开始进行检查,找到问题所在,再利用调试,找到具体问题所在
    3. 当想要利用函数改变传入参数的值,需要传入地址,则可以选择
    1. Status CreatMatrix ( Matrix &M , int i , int j );
    //调用时
    	CreatMatrix ( M , i , j );
    2. Status CreatMatrix ( Matrix *M , int i , int j );
    //调用时
    	CreatMatrix ( &M , i , j );
    
    展开全文
  • 稀疏矩阵加法

    2013-03-04 01:10:31
    设稀疏矩阵A和B均以三元组顺序表作为存储结构。试设计算法,计算A+B,并将运算结果存于三元组顺序表C中。
  • 矩阵加法1

    2022-08-08 23:10:13
    输入格式 输入数据的第一行包含两个整数N、M,表示需要相加的两个矩阵的行数和列数。接下来2*N行每行包含M个数,其中前N行表示第一个矩阵,后N行表示第二个矩阵
  • 使用cuda实现矩阵加法 1.整体流程 1.申请内存 2.转移拷贝 3.释放空间 4.核函数 2.头文件 关于cuda操作的一些接口都在这个头文件里 #include 3.申请内存 cudaMalloc()接口 参数 含义 void *p 内存地址的指针 size_t s...

    使用cuda实现矩阵加法

    1.整体流程

    1.申请内存
    2.转移拷贝
    3.释放空间
    4.核函数
    

    2.头文件

    • 关于cuda操作的一些接口都在这个头文件里
    #include <cuda_runtime.h>
    

    3.申请内存

    cudaMalloc()接口

    参数含义
    void *p内存地址的指针
    size_t s申请的内存大小
    cudaError_t返回类型
    cudaError_t cudaMalloc(void **p, size_t s) 
    

    4.转移拷贝

    cudaMemcpy()接口

    参数含义
    void *dst目标设备指针
    const void *src源设备指针
    size_t count内存复制的字节大小
    cudaMemcpyKind含义
    cudaMemcpyHostToDeviceCPU–>GPU
    cudaMemcpyDeviceToHostGPU–>CPU
    cudaError_t cudaMemcpy(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind);
    

    5.释放空间

    cudaFree接口

    cudaError_t cudaFree(void *devPtr);
    

    6.核函数

    1.定义

    • __global__标志核函数,在host调用,在device上执行
    • 核函数的返回类型必须是void
    • threadIdx线程索引 thread index
    • blockDim线程块维度
    • blockIdx线程块索引 block index
    __global__
    void vecAddKernel(float* A_d, float* B_d, float* C_d, int n)
    {
        // GPU中执行并行计算的thread id
        // 类比CPU中计算数组位置
        int i = threadIdx.x + blockDim.x * blockIdx.x;
        if (i < n) C_d[i] = A_d[i] + B_d[i];
    }
    

    2.调用

    • <<< >>> 告诉运行时如何启动设备(调用几个block,调用几个线程)
    vecAddKernel <<< blockPerGrid, threadPerBlock >>> (da, db, dc, n);
    

    7.编译与运行

    使用nvcc进行编译

    # 命令行终端执行
    nvcc my_gpu_add.cu -o my_gpu_add
    

    生成可执行文件my_gpu_add
    运行

    # 参数为执行加法运算的次数,相当于数组的大小
    ./my_gpu_add 1
    

    8.源代码

    附上源代码

    // my_gpu_add.cu
    #include <iostream>
    #include <cuda_runtime.h>
    #include <cstdlib>
    
    // 核函数
    __global__
    void vectorAddKernel(float * A_d, float * B_d, float * C_d, int n){
        int i = threadIdx.x + blockDim.x * blockIdx.x;
        if(i <= n) C_d[i] = A_d[i] + B_d[i];
    }
    
    
    int main(int argc, char * argv[]){
        int n = atoi(argv[1]);
        std::cout << "执行加法" << n << "次" << std::endl;
        
        // 要申请的内存大小
        size_t size = n * sizeof(float);
    
        // 先在host上申请内存,生成数据
        // 在CPU上使用 free - malloc 申请内存方式
        float *a = (float*)malloc(size);
        float *b = (float*)malloc(size);
        float *c = (float*)malloc(size);
    
        // 生成随机数组
        for(int i = 0; i < n; i++){
            float af = rand() / double(RAND_MAX);
            float bf = rand() / double(RAND_MAX);
            a[i] = af;
            b[i] = bf;
        }
    
        // 定义device指针
        float * da = NULL;
        float * db = NULL;
        float * dc = NULL;
    
        // 显存申请
        cudaMalloc((void **) &da, size);
        cudaMalloc((void **) &db, size);
        cudaMalloc((void **) &dc, size);
    
        // 转移拷贝 host --> device
        cudaMemcpy(da, a, size, cudaMemcpyHostToDevice);
        cudaMemcpy(db, b, size, cudaMemcpyHostToDevice);
        cudaMemcpy(dc, c, size, cudaMemcpyHostToDevice);
    
        // 调用核函数
        vectorAddKernel<<< n/256+1, 256>>> (da, db, dc, n);
        std::cout<<"nblockPerGrid:"<<n/256 +1 <<"\n";
    
        // 转移拷贝 device --> host
        cudaMemcpy(c, dc, size, cudaMemcpyDeviceToHost);
    
        // 释放显存
        cudaFree(da);
        cudaFree(db);
        cudaFree(dc);
    
        
        // std::cout<<"a:"<<*a<<"\n";
        // std::cout<<"b:"<<*b<<"\n";
        // std::cout<<"c:"<<*c<<"\n";
        /*
        $ ./my_gpu_add 1
        a:0.840188
        b:0.394383
        c:1.23457
        通过这个输出可以看出:计算结果是正确的
        */
    
        // 释放空间
        free(a);
        free(b);
        free(c);
        return 0;
    }
    
    展开全文
  • 本文实例讲述了C#实现矩阵加法、取负、数乘、乘法的方法。分享给大家供大家参考。具体如下: 1.几个基本函数 1)判断一个二维数组是否为矩阵:如果每行的列数都相等则是矩阵,没有元素的二维数组是矩阵 /// /// ...
  • 编写一个程序用于矩阵加法amd矩阵乘法.java 开发商Akshaykumar Talanje
  • 矩阵 python 加法_Python矩阵加法

    千次阅读 2020-09-14 13:31:03
    矩阵 python 加法Here you will get program for python matrix addition. In python “list” concept is there rather than arrays. For implementing matrix we should take help of lists in python. Matrix can...

    矩阵 python 加法

    Here you will get program for python matrix addition. In python “list” concept is there rather than arrays.  For implementing matrix we should take help of lists in python. Matrix can be represented as nested lists.

    在这里,您将获得用于python矩阵加法的程序。 在python中,“列表”概念存在,而不是数组。 为了实现矩阵,我们应该使用python中的列表。 矩阵可以表示为嵌套列表。

    Suppose if we want to implement 2×3 matrix then python syntax will look like this.

    假设如果要实现2×3矩阵,则python语法将如下所示。

    Matrix=[[1,2,3],[4,5,6]]     #This is 2×3 matrix

    Matrix = [[1,2,3],[4,5,6]]#这是2×3矩阵

    If we want to implement 3×2 matrix then

    如果我们要实现3×2矩阵

    Matrix=[[1,2],[3,4],[5,6]]     #This is 3×2 matrix.

    Matrix = [[1,2],[3,4],[5,6]]#这是3×2的矩阵。

    Python矩阵加法 (Python Matrix Addition)

    Below is python program for addition of two matrices. Program is made and tested in python 3.

    以下是用于添加两个矩阵的python程序。 该程序是在python 3中制作和测试的。

    def print_matrix(matrix):
    	for i in range(len(matrix)):
    		for j in range(len(matrix[0])):
    			print("\t",matrix[i][j],end=" ")
    		print("\n")
    def main():
    	m=int(input("enter rows"));
    	n=int(input("enter columns"));
     
    #in python initilization is needed before indexing.
    	matrix1=[[0 for j in range(0,n)] for i in range(0,m)]   # matrix 1 initialization with 0s
    	matrix2=[[0 for j in range(0,n)] for i in range(0,m)]    #matrix 2 intialization with 0s
    	res_matrix=[[0 for j in range(0,n)] for i in range(0,m)] # matrix for storing result
    	print("enter first matrix elements")
    	for i in range(0,m):
    		for j in range(0,n):
    			matrix1[i][j]= int(input("enter an element"))
    	print("enter second matrix elements ")	
    	for i in range(0,m):
    		for j in range(0,n):
    			matrix2[i][j]=int(input("enter an element"))
    		
    	for i in range(0,m):
    		for j in range(0,n):
    			res_matrix[i][j]=matrix1[i][j]+matrix2[i][j]
     
    #print input matrices
    	print(" matrix 1")
    	print_matrix(matrix1)
    	print(" matrix 2")
    	print_matrix(matrix2)
    		
    # printing resultant matrix
    	print("resultant matrix after adding")
    	print_matrix(res_matrix)
    	
    main()

    Output

    输出量

    Python Matrix Addition

    翻译自: https://www.thecrazyprogrammer.com/2018/01/python-matrix-addition.html

    矩阵 python 加法

    展开全文
  • 矩阵加法的运算

    2013-01-04 20:57:09
    实现c语言矩阵加法,用2矩阵的加/减没什么,就是2个相同的矩阵的对应项相加/减,要求就是2个矩阵的行列都一样关键在于乘,2矩阵相乘,2个矩阵不能一样,比如说A矩阵是3行4列,那么B矩阵必须是4行3列才行,对于输入矩阵的...
  • 利用C语言,求矩阵加法,减法,乘法,转置矩阵
  • 程序效果展示 本程序的优点 能够按照需求选择矩阵加法与矩阵乘法 能够自定义矩阵的行与列 且能够自行输入数据,为写数学作业服务,把单一计算交给计算机去处理 完成一次运算后,程序不会自动退出,能够继续进行下...
  • 稀疏矩阵加法(C语言)

    千次阅读 2021-05-23 18:51:40
    稀疏矩阵加法 给定两个矩阵A和B,求其和矩阵C=A+B。 输入格式: 第一行包含两个数Row和Col,分别表示矩阵的行数和列数,A和B的维度是一致的。 第二行只有一个数N​​1​​,表示接下来要输入的A中的非零元素的个数。...
  • c++ 矩阵加法 输入矩阵Here you will find program for matrix addition in C. 在这里,您将找到C语言中矩阵加法的程序。 Two matrix can be added only when number of rows and columns of first matrix is ...
  • 接下来2*N行每行包含M个数,其中前N行表示第一个矩阵,后N行表示第二个矩阵。 输出 你的程序需要输出一个N*M的矩阵,表示两个矩阵相加的结果。注意,输出中每行的最后不应有多余的空格. 输入样例 1 2 2 1 2 3...
  • C语言矩阵加法乘法

    2021-05-19 17:18:58
    并不是很难的问题,但是自己思考测试独立完成的,保存于此,给自己一点鼓励。/*Author:SwordAutumn2015年04月08日星期三15:35:00CST*/#include//constintN=3;//constintM=2;#defineN5#defineM5intmain(intargc,char...
  • 7-1 稀疏矩阵加法 PTA

    2022-01-07 13:44:19
    给定两个矩阵A和B,求其和矩阵C=A+B。 输入格式: 第一行包含两个数Row和Col,分别表示矩阵的行数和列数,A和B的维度是一致的。 第二行只有一个数N1​,表示接下来要输入的A中的非零元素的个数。 接下来是N1​行...
  • 三元组顺序表表示的稀疏矩阵加法——数据结构及算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,681
精华内容 16,672
关键字:

矩阵的加法

友情链接: games-1.6.10.tar.gz