Matlab中eig内置函数转为C语言

     本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量。[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值。其中Rx维度为12*12的复矩阵。

  1. 首先在MATLAB端创建入口函数保存为eigvalue.m:Matlab中eig内置函数转为C语言
  2. 打开MATLAB Coder,添加入口函数:

Matlab中eig内置函数转为C语言

3.在定义输入类型窗口中,需要添加输入数据来训练函数:因此需要编写数据的产生函数保存为laoddata.m:

Matlab中eig内置函数转为C语言

4.在输入脚本中添加loaddata.m文件,也可以直接添加脚本命令,如[V D]=eigvalue([1,2,3,4,...]),点击autodefine input types

Matlab中eig内置函数转为C语言

5.进入下一步,点击check for issues

Matlab中eig内置函数转为C语言

6.成功后即可生成C代码文件。

Matlab中eig内置函数转为C语言

7.此时可以建立C工程,将codegen\lib\eigvalue文件夹下面的c和h,以及examples下面的main文件拷贝出来到C工程下面

Matlab中eig内置函数转为C语言

8.此时还需要拷贝一个tmwtypes.h到C工程中,否则编译报错,该头文件位于MATLAB\extern\include下面

Matlab中eig内置函数转为C语言

9.在C工程中,重新创建自己的main函数,这里需要注意的是需要把拷贝过来的main函数给注释掉,同时需要将初始化函数和终止函数给添加到自己写的main函数中,即eigvalue_initialize();和eigvalue_terminate();

Matlab中eig内置函数转为C语言

10.添加eigvalue()函数,因为我们传递的是已经产生好的数组,所以不需要初始化数组的函数即argInit_12x12_creal_T(dcv0);直接将该函数中的eigvalue函数拷贝到我们自己写的主函数中即可。

Matlab中eig内置函数转为C语言

11.运行后,结果如图所示:

Matlab中eig内置函数转为C语言