Matlab中eig内置函数转为C语言
本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量。[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值。其中Rx维度为12*12的复矩阵。
- 首先在MATLAB端创建入口函数保存为eigvalue.m:
- 打开MATLAB Coder,添加入口函数:
3.在定义输入类型窗口中,需要添加输入数据来训练函数:因此需要编写数据的产生函数保存为laoddata.m:
4.在输入脚本中添加loaddata.m文件,也可以直接添加脚本命令,如[V D]=eigvalue([1,2,3,4,...]),点击autodefine input types
5.进入下一步,点击check for issues
6.成功后即可生成C代码文件。
7.此时可以建立C工程,将codegen\lib\eigvalue文件夹下面的c和h,以及examples下面的main文件拷贝出来到C工程下面
8.此时还需要拷贝一个tmwtypes.h到C工程中,否则编译报错,该头文件位于MATLAB\extern\include下面
9.在C工程中,重新创建自己的main函数,这里需要注意的是需要把拷贝过来的main函数给注释掉,同时需要将初始化函数和终止函数给添加到自己写的main函数中,即eigvalue_initialize();和eigvalue_terminate();
10.添加eigvalue()函数,因为我们传递的是已经产生好的数组,所以不需要初始化数组的函数即argInit_12x12_creal_T(dcv0);直接将该函数中的eigvalue函数拷贝到我们自己写的主函数中即可。
11.运行后,结果如图所示: