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算法进行计算,得出正确结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值