Matlab中MUSIC函数转为C语言

1.在MATLAB中自己写好封装的函数music.m后,在新建m文件编写数据输入,其中pulse0是已经产生好的数据矩阵:

2.将测试矩阵pulse0.mat转为txt格式,方便后续转化为C语言的测试使用;这里需要注意矩阵转为txt是以列向量存储,因为后面C程序是通过一列一列的读取数据存储在一维数组中,因此这里应该采用先读列数据,后读行数据进行txt的写入。b为列的大小,a为行的大小:

3.自此写好的3个M文件应该放在一个文件夹中,便于后续C的生成。工程目录也应与自己编写的M文件在同一个目录下面。

4.在定义输入类型时需要注意,pulse0的大小不定,因此需要设置X的大小为Variable-Size,右键点击X变量即可设置。

5.编译通过后将产生的C文件拷贝的自己的C工程下,打开main.c,MATLAB产生的C函数默认输入为0,因此我们需要进行修改。其中main函数中的initialize和terminate函数不需要修改,也不能注释掉,否则无结果。打开main_music()函数

6.可以看到该子函数主要是对X和M的初始化操作,在这里,常量M我们直接设置为12,对于变量矩阵X,需要继续打开argInit()函数

7.数组iv1中存储X矩阵的维数,这里为5401*12。通过fopen函数和fscanf函数按格式读取MATALAB存储下来的txt数据,其中t1存储实部,t2存储数据虚部。

8.这两层循环是对result结构体进行赋值操作,赋值顺序为第一行第一列存在result[0],第一行第二列存在result[5401],第一行第三列存在result[5401*2]中。

9.最后可以将初始化好的数据写入txt中,便于验证数据读取是否正确。最后通过music算法进行计算,得出正确结果。


猜你喜欢

转载自blog.csdn.net/u011441044/article/details/81019333
今日推荐