关于DBT阵列信号处理工具箱在新版Matlab中的移植

DBT是一个用于阵列信号处理的Matlab工具箱,有很多的函数和例子,对于常见的MUSIC、ESPRIT等阵列信号处理的方法都有很好的实现,是雷达工作者的极好帮手,不过由于开发年代久远(网上能找到的最新版是2.20),所以在新版Matlab上无法使用,突出的问题就是其代码大量使用了C语言编写的函数库,实现于matvar.c文件中,里面很多函数都已经被新版的Matlab抛弃或更换,造成无法编译出所需的matvar.mexw32文件。这几天试验了很久,查了不少资料,终于成功地将matvar.c在Matlab R2013a下进行了编译移植。其步骤如下:

首先打开Matlab,切换到D:\MATLAB\R2013a\toolbox\radar\dbtR2-20\recvarR3-7目录下(如果你的Matlab安装目录和DBT目录不是上述路径,请自行修改,下同)。

使用mex -setup命令设置好C编译器配置,我用的是Visual Studio 2010。

将D:\MATLAB\R2013a\toolbox\radar\dbtR2-20\按子目录添加的方式添加到Matlab路径中,但是请删除D:\MATLAB\R2013a\toolbox\radar\dbtR2-20\recvarR3-7\matlab4目录,且确保D:\MATLAB\R2013a\toolbox\radar\dbtR2-20\recvarR3-7\matlab5目录的次序在其他所有工具箱之前,这主要是由于DBT内部使用的一些自有函数如getm、setm等,与Matlab的地图工具箱中的函数存在重名,需要提前声明。

接下来是修改matvar.c:

1.因为Matlab已经将Matrix结构更换为mxArray,所以在100行左右的地方,需要添加声明:
typedef mxArray     Matrix;
2.mxIsString函数已经废弃不用,将所有的mxIsString函数调用更换为mxIsChar;
3.mxCreateFull函数已经废弃不用,将所有的mxCreateFull函数调用更换为mxCreateDoubleMatrix;
4.所有的REAL常量更换为mxREAL;
5.所有的COMPLEX常量更换为mxCOMPLEX;
6.mxSetDispMode已经被Matlab废弃且没有替代函数,所以让setMatlabMatrixDisplayMode函数为空,也就是清除其中对mxSetDispMode函数的调用,据测试并不影响使用DBT;
6.mxGetName函数已经废弃不用,将所有的mxGetName函数更换为mxGetClassName函数;

完成上述修改后,键入mex matvar.c,可以生成matvar.mexw32文件,用tmatvar命令测试成功即可,以下是dbtex1范例的运行结果:

不过DBT工具箱似乎已经多年不曾更新,加上最新版的Matlab已经为雷达、声呐等应用领域开发了功能强大的官方版的相控阵工具箱(Phased Array System Toolbox),所以DBT工具箱的作用可能已经不如十年前那么大了,不过仍然是极具参考价值的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值