矩阵及其运算(二):矩阵的运算

1.矩阵的加法

数学定义:设有两个m*n的矩阵AB,那么矩阵A与B的和记作A+B,规定其内的元素为A,B内对应元素的和.

 *矩阵加法满足交换律和结合律

 *矩阵减法:A-B=A+(-B)

  ‘重载矩阵加法
    Public Overloads Shared Operator +(ByVal leftMatrix As Matrix, ByVal RightMatrix As Matrix) As Matrix
        Dim leftRow, leftCol, rightRow, rightCol As Integer
        leftRow = leftMatrix.Row : leftCol = leftMatrix.Col ‘被加矩阵的行与列长度
        rightRow = RightMatrix.Row : rightCol = RightMatrix.Col ‘相加矩阵的行与列长度
        If leftRow = rightRow And leftCol = rightCol Then
            Dim tempMatrix As New Matrix(leftRow, leftCol)
            For i = 1 To leftRow
                For j = 1 To leftCol
                    tempMatrix.Item(i, j) = leftMatrix.Item(i, j) + RightMatrix.Item(i, j) ‘对应元素相加
                Next
            Next
            Return tempMatrix
        Else
            Return Nothing
        End If
    End Operator
    ‘重载矩阵减法
    Public Overloads Shared Operator -(ByVal leftMatrix As Matrix, ByVal RightMatrix As Matrix) As Matrix
        Dim leftRow, leftCol, rightRow, rightCol As Integer
        leftRow = leftMatrix.Row : leftCol = leftMatrix.Col ‘被减矩阵的行与列长度
        rightRow = RightMatrix.Row : rightCol = RightMatrix.Col ‘相减矩阵的行与列长度
        If leftRow = rightRow And leftCol = rightCol Then
            Dim tempMatrix As New Matrix(leftRow, leftCol)
            For i = 1 To leftRow
                For j = 1 To leftCol
                    tempMatrix.Item(i, j) = leftMatrix.Item(i, j) - RightMatrix.Item(i, j) ‘对应元素相减
                Next
            Next
            Return tempMatrix
        Else
            Return Nothing
        End If
    End Operator

2.数与矩阵相乘

数学定义:设数λ和矩阵A,那么λ与矩阵A的乘积记作λA,规定其内的元素为A,B内对应元素的乘积.

*数与矩阵相乘满足交换律,结合律和分配律

*矩阵加法与数乘矩阵统称为矩阵的线性运算

    ‘重载数与矩阵相乘
    Public Overloads Shared Operator *(ByVal leftNum As Integer, ByVal RightMatrix As Matrix) As Matrix
        Dim rightRow, rightCol As Integer
        rightRow = RightMatrix.Row : rightCol = RightMatrix.Col ‘相加矩阵的行与列长度
        Dim tempMatrix As New Matrix(rightRow, rightCol)
        For i = 1 To rightRow
            For j = 1 To rightCol
                tempMatrix.Item(i, j) = RightMatrix.Item(i, j) * leftNum ‘对应元素相加
            Next
        Next
        Return tempMatrix
    End Operator
    ‘重载矩阵与数相乘(交换律)
    Public Overloads Shared Operator *(ByVal RightMatrix As Matrix, ByVal leftNum As Integer) As Matrix
        Dim rightRow, rightCol As Integer
        rightRow = RightMatrix.Row : rightCol = RightMatrix.Col ‘相加矩阵的行与列长度
        Dim tempMatrix As New Matrix(rightRow, rightCol)
        For i = 1 To rightRow
            For j = 1 To rightCol
                tempMatrix.Item(i, j) = RightMatrix.Item(i, j) * leftNum ‘对应元素相加
            Next
        Next
        Return tempMatrix
    End Operator

3.矩阵与矩阵相乘

数学定义:设A是一个m*s的矩阵,B是一个s*n的矩阵,那么规定矩阵A与矩阵B的乘积是一个s*n的矩阵C,规定其i行j列的元素为A的i行与B的j列内对应元素的乘积和.

*矩阵与矩阵相乘满足结合律和分配律,但不满足交换律

 ‘重载矩阵乘法
    Public Overloads Shared Operator *(ByVal leftMatrix As Matrix, ByVal RightMatrix As Matrix) As Matrix
        Dim leftRow, leftCol, rightRow, rightCol As Integer
        leftRow = leftMatrix.Row : leftCol = leftMatrix.Col ‘被乘矩阵的行与列长度
        rightRow = RightMatrix.Row : rightCol = RightMatrix.Col ‘相乘矩阵的行与列长度
        If leftCol = rightRow Then
            Dim tempMatrix As New Matrix(leftRow, rightCol)
            For i = 1 To leftRow
                For j = 1 To rightCol
                    For k = 1 To leftCol
                        tempMatrix.Item(i, j) = tempMatrix.Item(i, j) + leftMatrix.Item(i, k) * RightMatrix.Item(k, j) ‘对应元素相加
                    Next
                Next
            Next
            Return tempMatrix
        Else
            Return Nothing
        End If
    End Operator
时间: 2024-08-06 14:32:49

矩阵及其运算(二):矩阵的运算的相关文章

im2col:将卷积运算转为矩阵相乘

im2col:将卷积运算转为矩阵相乘 发表于 2019-04-26  更新于 2019-05-15  分类于 深度学习  阅读次数: 28 本文字数: 2.9k 博客:blog.shinelee.me | 博客园 | CSDN im2col实现 如何将卷积运算转为矩阵相乘?直接看下面这张图,以下图片来自论文High Performance Convolutional Neural Networks for Document Processing: im2col上图为3D卷积的传统计算方式与矩阵乘

【原创】开源Math.NET基础数学类库使用(二)矩阵向量计算

开源Math.NET系列文章目录: 1.开源.NET基础数学计算组件Math.NET(一)综合介绍  2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算  3.开源.NET基础数学计算组件Math.NET(三)C#解析Matlab的mat格式 4.开源.NET基础数学类库使用Math.NET(四)C#解析Matrix Marke数据格式 5.开源.NET基础数学类库使用Math.NET(五)C#解析Delimited Formats数据格式 6.开源.NET基础数学类库使用Mat

图像处理之基础---二维卷积运算原理剖析

卷积运算(Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表示函数f 与经过翻转和平移与g 的重叠部分的累积.如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广.假设: f(x),g(x)是R1上的两个可积函数,并且积分是存在的.这样,随着 x 的不同取值,这个积分就定义了一个新函数h(x),称为函数f 与g 的卷积,记为h(x)=(f*g)(x). 两个向量卷积,说白了就是多项式乘法.下面用个矩阵例子说明其工作原理: a和d的卷积就是

POJ--2158--------------Milking Grid(最小覆盖字符矩阵)---(开二维kmp)

Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 6169   Accepted: 2573 Description Every morning when they are milked, the Farmer John's cows form a rectangular grid that is R (1 <= R <= 10,000) rows by C (1 <= C <= 75

【矩阵与行列式】矩阵和行列式学习笔记

开始从ToDoList里挑东西来杀. 感觉矩阵和行列式这两个跟很多东西都有关而且接触最少 所以先从它们开始补>w< P.S.看了很多资料,他们对矩阵和行列式这些东西的介绍都很丧病-我会尽量用通俗的语言来写我的笔记= =如果您不喜欢这种风格QAQ那我也没办法了请隔壁看别人的吧 ---------线割分是我>w<--------------– 什么是矩阵? 矩阵是n*m个数在n*m这个二维区域内的一个排列,是一个横纵排列的二维数字表格. 也就是说,矩阵只是一些数的一种存储形式. 通常我

java学习第13天( java获取当前时间,有关大数据的运算及精确数字运算,Date类)

一 java获取当前时间 学习一个函数,得到当前时间的准确值 System.currectTimeMillis(). 可以得到以毫秒为单位的当前时间.它主要用于计算程序运行时间,long start=System.currectTimeMillis() ,long stop=System.currectTimeMillis() , stop-start; 二  有关大数据的运算及精确数字运算. 此时integer不适用.我们使用BigInteger ,如:BigInteger B= new Bi

从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同

从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同 例一:毛刺在往外凸的面上 策略1:分割出黑色部分,然后通过开运算去掉毛刺,再通过原黑色部分区域减去开运算之后的区域,得到毛刺部分的区域. 1 read_image (Tu, 'C:/Users/xiahui/Desktop/tu.jpg') 2 binary_threshold (Tu, Region, 'max_separability', 'dark', UsedThreshold) 3 open

特征提取与匹配、基础矩阵、单应矩阵、极限约束

Ubuntu16.04 + opencv2.4.9 一.特征提取与匹配 (以ORB特征为例) features.cpp 1 #include<iostream> 2 #include<opencv2/core/core.hpp> 3 #include<opencv2/highgui/highgui.hpp> 4 #include<opencv2/features2d/features2d.hpp> 5 #include<opencv2/calib3d/

位运算计算与位运算应用

位运算包括与,或,取反,异或,左移,右移等. 一 位运算计算 1 与运算:& 操作符&将2个数的二进制位进行与操作,2个数对应的位都为1,运算结果为1:否则运算结果为0. 比如 6&8,6的二进制为:0110   8的二进制为:1000.所以6&8 = 0000 = 0 2 或运算:| 操作符|将2个数的二进制位进行或操作,2个数对应的位有一个为1,运算结果为1:否则运算结果为0. 比如 6&8,6的二进制为:0110   8的二进制为:1000.所以6&8