• halcon知识:矩阵专题【01】


    一、提要    

            本文聊聊Halcon的矩阵操作。在做一些实验的时候,常常用matlab方便,其实,熟悉halcon的学者,也可用halcon实现常规的数学实验。本人认为halcon是一个很丰富的资源,甚至超过Opencv,专门挤出时间研究halcon的矩阵是非常核算的付出。

    二、矩阵相关算子

    2.1 矩阵如何创建

     create_matrix( : : RowsColumnsValue : MatrixID)

    参数表:( : : Rows-矩阵行数, Columns-矩阵列数, Value-矩阵元素值元组 : MatrixID-矩阵索引号)

    说明:这里创建矩阵,要求将矩阵所有元素确定地传进,其格式为1X(rows*columns)维度。

    1. Rows:=4
    2. Cols:=4
    3. Value:=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
    4. create_matrix(Rows,Cols,Value,MatrixID )

    2.2 矩阵元素的读取

    get_value_matrix( : : MatrixIDRowColumn : Value)

    参数表:( : : MatrixID--矩阵的索引号, Row--用tuple指定的多行, Column--用tuple指定的多列 : Value--用tuple指定的输出)

                  另一种情况,如果只访问一个值,那么RowColumn以数量形式给出就可以了

    说明:参考示例

    1)访问一个值 

    get_value_matrixMatrixID, 5, 7Value)    *Value中获得5行7列的值

    2)访问多个值

    2.3 获取矩阵大小

    get_size_matrix(matrix_id,rows,cols)

    2.4 创建对角矩阵或获取矩阵的对角元素

            运算符 get_diagonal_matrix 生成一个新的矩阵 Vector 并将 Matrix 的对角元素复制到这个新矩阵。矩阵由矩阵句柄 MatrixID 定义。矩阵向量具有一列和 n 行,其中 n = 对角线元素的数量。运算符返回矩阵 Vector 的矩阵句柄 VectorID。可以访问矩阵的元素,例如使用运算符。

    1 对于方阵

    方阵的对角线有第0、-1、1、-2、2...个如:

     2 非方阵矩阵

    2.5 得到矩阵的全部元素

    • get_full_matrix(MatrixID, Values)

    将全部矩阵的元素获取出来:

     2.6 得到矩阵的子矩阵

    • get_sub_matrix( : : MatrixID, Row, Column, RowsSub, ColumnsSub : MatrixSubID)

    得到MatrixID矩阵中,以Row, Column开始单元的, RowsSub个行, ColumnsSub个列的子矩阵。

    2.7 设置矩阵元素值

    • set_value_matrix(matrix_1_id,1,1,-10)

            此语句将矩阵matrix_1_id的1行1列赋值为-10

    2.8 设置整个矩阵元素值

    • set_full_matrix(matrix_1_id,1)

            此句将整个矩阵matrix_1_id元素刷新为1.

    2.9 求逆矩阵

    • invert_matrix( : : MatrixID, MatrixType, Epsilon : MatrixInvID)

    运算符 invert_matrix 计算由矩阵句柄 MatrixID 定义的矩阵的逆矩阵。使用结果生成一个新矩阵 MatrixInv,并返回该矩阵的矩阵句柄 MatrixInvID。可以用get_full_matrix访问矩阵的元素。

    对于 Epsilon = 0,计算倒数。可以通过 MatrixType 选择 Matrix 的类型。支持以下值:“general”表示一般,“symmetric”表示对称,“positive_defined”表示对称正定,“tridiagonal”表示三对角线,“upper_triangular”表示上三角,“permuted_upper_triangular”表示置换上三角,“lower_triangular”用于下三角矩阵,'permuted_lower_triangular' 用于置换下三角矩阵。

    对于 Epsilon > 0,使用奇异值分解 (SVD) 计算伪逆。在计算过程中,所有小于 Epsilon * 最大奇异值的奇异值都设置为 0。对于这些值,不进行内部除法以防止被零除。如果使用 SVD 算法计算方阵,则计算需要更多时间。矩阵的类型必须设置为 MatrixType = 'general'。

    2.10 取矩阵的逆

    invert_matrix_mod

    运算符 invert_matrix_mod 计算由矩阵句柄 MatrixID 定义的矩阵的逆矩阵。

    输入矩阵被结果覆盖。可以访问矩阵的元素,例如使用运算符 get_full_matrix

    其它内容同invert_matrix。


     

  • 相关阅读:
    SVR和SVM是什么关系
    jQuery实现下拉菜单
    Java学习笔记5.1.2 集合 - Collectiont接口
    23. 图论 - 图的由来和构成
    大衍数列-蓝桥杯?-Lua 中文代码解题第2题
    同花顺_代码解析_五彩K线
    c==ubuntu+vscode debug redis7源码
    考研政治(一)马克思原理
    Rockdb简介
    用户登录和退出,以及访问请求的token校验
  • 原文地址:https://blog.csdn.net/gongdiwudu/article/details/114436964