4.1矩阵运算的设计与实现

//4.1矩阵运算的设计与实现

#include <stdio.h>
#include <string.h>

#define M 4
/****----------------------------------------------****/
//函数名:MatrixAdd(int m1[M][M], int m2[M][M], int &result[M][M])
//参数:   (传入)int m1[M][M], m2[M][M]矩阵m1和m2
//        (传入)int result[M][M],矩阵加计算结果
//作用:   两矩阵相加
//备注:   计算公式为result[i][j] = m1[i][j] + m2[i][j]
/****----------------------------------------------****/
void MatrixAdd(int m1[M][M], int m2[M][M], int result[M][M])
{
    int i, j;
    for(i = 0; i < 4; i++) {
        for(j = 0; j < 4; j++) {
            result[i][j] = m1[i][j] + m2[i][j];
        }
    }
}

/****---------------------------------------------****/
//函数名: MatrixTrams(int m1[M][M], int &result[M][M])
//参数:   (传入)int m1[M][M],矩阵m1
//作用:   将矩阵转置
/****---------------------------------------------****/
void MatrixTrams(int m1[M][M], int result[M][M])
{
    int i, j;
    for(i = 0; i < 4; i++) {
        for(j = 0; j < 4; j++) {
            result[i][j] = m1[j][i];
        }
    }
}

/****--------------------------------------------****/
//函数名: MatrixPlus(int m1[M][M], int m2[M][M], int result[M][M])
//参数:   (传入)int m1[M][M], int m2[M][M] 矩阵m1和m2
//        (传入)int result[M][M],矩阵乘计算结果
//作用:   两矩阵相乘
//备注:   计算公式为result[i][j] = m1[i][k]*m2[k][j]
/****--------------------------------------------****/
void MatrixPlus(int m1[M][M], int m2[M][M], int result[M][M])
{
    int i, j, k;
    for(i = 0; i < 4; i++) {
        for(j = 0; j < 4; j++) {
            result[i][j] = 0;
            for(k = 0; k < 4; k++) {
                result[i][j] += m1[i][k]*m2[k][j];
            }
        }
    }
}

/****--------------------------------------------*****/
//函数名: Display(int result[M][M])
//参数:   (传入)int result[M][M],矩阵result
//作用:   输出矩阵值
//备注:   按行输出
/****--------------------------------------------****/
void Display(int result[M][M])
{
    int i, j;
    printf("The operating result of Matrix:\n");
    for(i = 0; i < 4; i++) {
        for(j = 0; j < 4; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }
}

/***********************测试程序********************/

int main()
{
    int A[M][M];
    int B[M][M];
    int i, j;
    printf("Input the first Matrix:\n");
    for(i = 0; i < 4; i++) {
        for(j = 0; j < 4; j++) {
            scanf("%d", &A[i][j]);
        }
    }
    printf("Input the second Matrix:\n");
    for(i = 0; i < 4; i++) {
        for(j = 0; j < 4; j++) {
            scanf("%d", &B[i][j]);
        }
    }

    int result[M][M];
    MatrixAdd(A, B, result);
    Display(result);
    memset(result, 0, sizeof(result));
    MatrixPlus(A, B, result);
    Display(result);
    return 0;
}
时间: 2024-10-11 16:35:37

4.1矩阵运算的设计与实现的相关文章

MXNet设计和实现简介

原文:https://github.com/dmlc/mxnet/issues/797 神经网络本质上是一种语言,我们通过它来表达对应用问题的理解.例如我们用卷积层来表达空间相关性,RNN来表达时间连续性.根据问题的复杂性和信息如何从输入到输出一步步提取,我们将不同大小的层按一定原则连接起来.近年来随着数据的激增和计算能力的大幅提升,神经网络也变得越来越深和大.例如最近几次imagnet竞赛的冠军都使用有数十至百层的网络.对于这一类神经网络我们通常称之为深度学习.从应用的角度而言,对深度学习最重

数据结构课程设计《稀疏矩阵运算器》

最近正在弄数据结构课程设计内容,说实话,感觉自己数据结构学的就是渣,好多东西都不会.还是要多学点东西啊.现在暂且贴点之前写完的东西吧,到时候也好有个总结. 1 诸论 1.1 问题描述 稀疏矩阵是指那些多数元素为零的矩阵.利用"稀疏"特点进行存储和计算可以大大节省存储空间,提高计算准备效率.实现一个能进行稀疏矩阵基本运算的运算器. 1.2 基本要求 以"带行逻辑链接信息"的三元组顺序表示稀疏矩阵,实现两个稀疏矩阵相加.相减.相乘和求逆的运算.稀疏矩阵的输入形式采用三元

关于浮点型矩阵加速模块设计的感想

本次设计3*3以下矩阵乘法和加法,完成但是遇到的问题值得思考. 1,本次设计工程中整体架构的思考因为3阶以下矩阵相乘有1行3列*3行1列,2行1列乘以1行两列等等形式共27种,若分别求解相当麻烦,根据矩阵运算的性质如要求1行3列*3行1列,可以将两个3*3的矩阵这样赋值:矩阵a的第一行赋为1*3的矩阵的值,其余为0,矩阵b的第一列赋为3*1的矩阵的值,其余为0,那么两个3*3的矩阵相乘后的第一个元素就是结果值. 2,乘法和加法过程中根据矩阵运算的展开式可以发现运算具有并行特点.此过程用9个加法器

MATLAB编程与应用系列-第3章 矩阵运算(2)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] ###3.1.5 矩阵函数MATLAB提供了丰富的函数来实现对矩阵的各种运算,下面将逐步介绍.因篇幅关系,将不作数学方面的解释.表3.1所示为常用的矩阵运算函数以及函数相对应的功能描述

MATLAB编程与应用系列-第3章 矩阵运算(1)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] 本章将介绍与MATLAB矩阵运算有关相关的内容.矩阵运算是MATLAB的基础,是MATLAB强大计算功能的体现.这一章的内容可以帮助读者解决一些学习和工作中常遇到的实际问题,让读者了解

MATLAB编程与应用系列-第3章 矩阵运算(3)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] ###3.1.8 矩阵和数组运算比较在进行矩阵和数组运算的时候,要认识到矩阵和数组类似运算的区别,两种运算指令形式和实质内涵的异同见表3.3.其中S为标量,A.B为矩阵.表3.3 矩阵

高速设计学习-干货!高速串行Serdes均衡之FFE

干货!高速串行Serdes均衡之FFE http://www.sohu.com/a/307013503_458015 2019-04-10 15:12 来源:EETOP论坛 及 公众号:不忘初心的模拟小牛牛 作者:131v1vv 本系列,准备把高速串行通信中用到的均衡进行一个总结.这期先介绍发送端. 高速接口SerDes为实现芯片间信号的有线传输,需要完成数字到模拟的转化,经过通道传输后,再将模拟信号转回数字信号.并保证传输过程保持比较低的误码率.本期,结合信道的特性,我们来了解一下SerDes

静态网页框架设计首次体验(文章改)

根据教材与上网成功解决了Tomcat与Myeclipse的安装,同时熟悉了Java web创建项目到部署运行整个过程.今天起正式开始学习有关Java web的编程部分.Java web静态网页(HTML网页)的标记含义.基本语法的介绍到框架设计基本模板与案例,今天的学习的内容,让网页编程有了一个初步的框架.结合自身所在协会的情况,计划制作一个关于协会的网页,已有初步想法,望通过学习不断完善和修改协会网站.根据今天所学,并参考书本30页框架设计案例对网页进行初步搭建. 具体代码如下 TW.jsp:

PYQT设计无边框窗体

#UI.py,通过UI设计师制作后直接转换为UI.py脚本 # -*- coding: utf-8 -*-from PyQt4 import QtCore, QtGui try:    _fromUtf8 = QtCore.QString.fromUtf8except AttributeError:    _fromUtf8 = lambda s: s class Ui_Form(object):    def setupUi(self, Form):        Form.setObject