C++应用Eigen库对应实现matlab中部分函数问题

 更新时间:2022年12月15日 14:24:39   作者:妙懂自己  
这篇文章主要介绍了C++应用Eigen库对应实现matlab中部分函数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

将Eigen加入到项目中

1.如下图将Eigen库文件夹加入到项目目录中。

2.将Eigen文件加入到运行环境变量中

3.在项目头文件中包含Eigen。

使用Eigen中函数及功能

1)声明矩阵,向量,数组:

图中声明了一个2x3的矩阵,矩阵中数据类型为float。

第一个参数为矩阵中数据类型,第二参数为行数,第三为列数。

当参数为Dynamic时为动态,程序会自动检测需要设置XxX矩阵。

2)矩阵赋值

方法一:

方法二:

方法三:

3)复数矩阵赋值方式

输出矩阵

使用方法

4)伴随矩阵,共轭矩阵,伴随矩阵

使用方法

5)矩阵重塑

使用方法

6)矩阵运算

a)矩阵加法、减法、乘法

行列相等矩阵相加减运用方法:

行列不等的矩阵相加减运用方法:

矩阵于常数

矩阵于常数想加减运用方法及输出结果:

此处不能直接对matrix进行常数加减,需要将其转化为array后进行加减运算。

b)三角函数

所有数学函数输入的值均以弧度计算,函数会对矩阵中每个值进行相应的运算。

其中矩阵需要转为array才能进行运算。

测试结构体:

用法:

m1.array().atan(); m1.array().asin(); m1.array().acos();

m1.array().sin(); m1.array().cos(); m1.array().tan();

c)其他,

测试结构体:

使用方法:

  • log(m1.array())将m1中各元素取自然对数返回结果矩阵
  • log2(m1.array())将m1中各元素取基数为2对数返回结果矩阵
  • log10(m1.array())将m1中各元素取基数为10对数返回结果矩阵:
  • m1.sum(): 返回矩阵m1中所有元素的和
  • m1.prod(): 返回矩阵m1中所有元素的积
  • m1.mean(): 返回矩阵m1中所有有元素的平均值
  • m1.trace():返回矩阵的迹,即返回主对角线上元素的和。如果不是方阵或者为向量,仍返回对角线元素的和。
  • m1.minCoeff(): 返回矩阵中最小的元素
  • m1.maxCoeff(): 返回矩阵中最大的元素
  • abs( m1.array()):将m1中各元素取绝对值返回结果矩阵
  • square( m1.array()):将m1中各元素开方返回结果矩阵

7)元胞数组转换成矩阵(matlab代码中cell2mat)

未找到

8)查找矩阵中非0元素下表(matlab代码中find)

未找到

9)Splines插值

此处只用eigen库实现了一维Splines插值法

实现类:

使用方法

10)曲线拟合(对应matlab函数polyfit)

被和谐了

11)多项式计算(对应matlab函数polyval)

未找到

12)直线拟合

被和谐了

问题及解决方式

问题一:

原因:程序操作了矩阵行列边界之外的数值;

解决方法:查询代码,查看在哪操作了数组边界之外数据,修改。

问题二:编译时出现error C2338: YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES

原因:矩阵赋值时出现不匹配现象,比如一个3x2的矩阵向2x3矩阵赋值,就会报此类错误。

注意事项

Qt中,QDbug无法输出矩阵;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C语言基本排序算法之桶式排序实例

    C语言基本排序算法之桶式排序实例

    这篇文章主要介绍了C语言基本排序算法之桶式排序,简单说明了桶式排序的原理并结合具体实例给出了C语言实现桶式排序算法的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • C语言读取文件流的相关函数用法简介

    C语言读取文件流的相关函数用法简介

    这篇文章主要介绍了C语言读取文件流的相关函数用法简介,包括fread()函数和feof()函数的使用,需要的朋友可以参考下
    2015-08-08
  • C语言中字符型数据和浮点型数据介绍

    C语言中字符型数据和浮点型数据介绍

    大家好,本篇文章主要讲的是C语言中字符型数据和浮点型数据介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • C++中用substr()函数消除前后空格的解决方法详解

    C++中用substr()函数消除前后空格的解决方法详解

    本篇文章是对C++中用substr()函数消除前后空格的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • VC++植物大战僵尸中文版修改器实现代码

    VC++植物大战僵尸中文版修改器实现代码

    这篇文章主要介绍了VC++植物大战僵尸中文版修改器实现代码,可实现植物大战僵尸中的无限阳光与无冷却时间功能,需要的朋友可以参考下
    2015-04-04
  • c语言实现学生管理系统详解

    c语言实现学生管理系统详解

    这篇文章主要为大家介绍了c语言实现学生管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2021-12-12
  • C++深入探究引用的使用

    C++深入探究引用的使用

    引用是C++一个很重要的特性,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价,这篇文章主要给大家总结介绍了C++中引用的相关知识点,需要的朋友可以参考下
    2022-05-05
  • C++如何获取系统信息 C++获取IP地址、硬件信息等

    C++如何获取系统信息 C++获取IP地址、硬件信息等

    这篇文章主要为大家详细介绍了C++如何获取系统信,C++获取IP地址、硬件信息等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • C/C++使用Zlib实现文件的压缩与解压

    C/C++使用Zlib实现文件的压缩与解压

    zlib 是一个开源的数据压缩库,旨在提供高效、轻量级的压缩和解压缩算法,本文将介绍如何使用 zlib 库进行数据的压缩和解压缩,以及如何保存和读取压缩后的文件,感兴趣的可以了解下
    2023-11-11
  • 桶排序算法的理解及C语言版代码示例

    桶排序算法的理解及C语言版代码示例

    桶排序算法顾名思义,就是把要排序的元素分桶排序后合并结果,这里我们就来看一下桶排序算法的理解及C语言版代码示例:
    2016-07-07

最新评论