MATLAB(R2015b)和C#(VS2010)混合编程实例说明
- 格式:pdf
- 大小:669.93 KB
- 文档页数:9
使用C++语言读取*.mat文件中的数据简介:借助于Matlab的接口函数,在Visual Studio中使用C++语言读取*.mat文件中的数据(这里主要是2维矩阵(灰度图像)和3维矩阵(彩色图像))到OpenCV 中的Mat数据结构中并显示图像,同时实现将灰度图像转化为伪彩色图像(类型为Matlab中的colormap jet),最后调用Windows的API函数实现窗口尺寸的自由调整。
工具:(1)Matlab R2015b(x64) (2)Visual Studio 2013 (3)OpenCV 3.0.0一、在Visual Studio配置Matlab和OpenCV假设Matlab的安装路径为“E:\Program Files\MATLAB”,OpenCV的安装路径为“E:\Program Files\opencv”。
1.配置环境变量在“控制面板》系统和安全》系统》高级系统设置》环境变量》系统变量”中找到变量名“Path”,编辑之,在变量值的末尾添加“;E:\Program Files\MATLAB\R2015b\bin\win64;E:\Program Files\opencv\build\x64\vc12\bin”。
如图1所示。
图12.配置配置管理器在Visual Studio 2013中新建一个“Win32控制台应用程序”,在菜单栏“生成”中打开“配置管理器”选项。
将“活动解决方案平台”中的“Win32”选为(新建为)“x64”。
如图2所示。
图23.配置属性管理器在菜单栏“视图”中打开“属性管理器”选项,右键点击Debug|x64下的er并打开“属性”选项,如图3所示。
在“er属性页”中找到“通用属性”下的“VC++目录”,在其右侧的“包含目录”下添加路径“E:\Program Files\opencv\build\include”“E:\Program Files\opencv\build\include\opencv”“E:\Program Files\opencv\build\include\opencv2”“E:\Program Files\MATLAB\R2015b\extern\include”“E:\Program Files\MATLAB\R2015b\extern\include\win64”一共5个路径。
机动目标距离徙动校正与检测算法贺雄鹏;廖桂生;许京伟;黄鹏辉;魏嘉琪【摘要】在机动目标的检测中,目标的速度、加速度会产生距离徙动和多普勒徙动的现象,影响机动目标的积累与检测性能.针对上述问题,提出一种基于频率轴反转变换与广义变尺度傅里叶变换的机动目标检测快速非搜索算法.首先在距离频域-方位时域利用频率轴反转变换校正距离徙动,回波信号变为线性调频信号;接着利用Wigner-Ville分布变换核与广义变尺度傅里叶变换对目标参数进行估计;最后在距离-多普勒域完成目标能量的积累.与现有方法相比,所提方法可以快速校正距离徙动,实现非搜索的目标参数估计,计算复杂度低.仿真实验表明,该方法可有效完成机动目标的检测与参数估计.%In the detection for the maneuvering target,the integration and detection performance for the moving targets may slide down due to the defocusing effects of the range migration and the Doppler frequency migration caused by target radial velocity and acceleration.To address these issues,a fast non-searching method based on fast time-frequency axis reversal and generalized scaled Fourier transform is proposed.In this algorithm,the frequency axis reversal transform is firstly applied to correct the range migration.Then,the received signal becomes the linear frequency modulated (LFM) signal,and both Wigner-Ville distribution (WVD) function and generalized scaled Fourier transform are applied to estimate the acceleration and velocity of the moving target.Finally,the moving target is well focused in the range-Doppler pared with the existing methods,the presented algorithm can fast eliminate the range migration and obtain the motionparameters without any searching procedure and can achieve a good balance between the computational cost and the detection ability as well as parameters estimation performance.Several simulation experiments are provided to demonstrate the effectiveness of the proposed algorithm.【期刊名称】《系统工程与电子技术》【年(卷),期】2018(040)001【总页数】8页(P1-8)【关键词】机动目标检测;参数估计;频率轴反转变换;广义变尺度傅里叶变换【作者】贺雄鹏;廖桂生;许京伟;黄鹏辉;魏嘉琪【作者单位】西安电子科技大学雷达信号处理国家重点实验室,陕西西安710071;西安电子科技大学雷达信号处理国家重点实验室,陕西西安710071;西安电子科技大学雷达信号处理国家重点实验室,陕西西安710071;西安电子科技大学雷达信号处理国家重点实验室,陕西西安710071;西安电子科技大学雷达信号处理国家重点实验室,陕西西安710071【正文语种】中文【中图分类】TN957.510 引言随着高性能武器装备的发展,以新一代战斗机(具有超声速和高机动等特点)为代表的运动目标,对传统雷达的探测能力提出了严峻的挑战,高机动目标检测与高精度运动参数估计研究受到广泛的关注[1-3]。
MATLAB2015b安装咱们这个MATLAB安装包是32位的,大家好多人用的win10系统64位,这个并不影响安装。
我自己回来装了一遍测试了下,OK,大家没安装成功的,照着做应该没问题。
还有该注意的地方,我标红了。
1、如图打开安装包,找到crack_win32文件夹,这个文件破解包2、双击打开,里面有4个子文件,找到readme,这是一个安装指引,打开后是一个简要的安装流程指导(下面我会具体写一下)。
3、下面安装过程中的安装目录是我自己建的,自己按个人习惯更改:①打开crack_win32,找到install这个文件,复制粘贴到D:\学习\matlab2015b\R2015b_win32\java\jar下;②然后打开bin文件,找到set up.exe,点击运行。
(D:\学习\matlab2015b\R2015b_win32\bin\win32)③点击set up.exe运行后,会弹出如下界面,选择“使用文件密钥”,点击下一步;④跳转到如下界面,继续选择“使用文件密钥”,点击确定;⑤点击“是”,点击下一步;⑥接下来,选择“我已有我的许可证的文件安装密钥”,然后将readme中的“11111111111111111111”复制粘贴过去;⑦然后是选择安装路径,这个可以按照个人习惯,点击浏览,设置路径,但不能出现中文字符,否则会报错(一般路径名尽量不要出现中文字符)更改后,不会再报错,点击下一步;(这就是软件的安装目录D:\matlab-IDE,在第13步的时候要用到,所以自己设置好)⑧接下来,是个产品选择界面,一般全选,不要更改;⑨下一步,安装选项,选择将快捷方式添加到桌面,点击下一步;⑩下一步,直接点击安装即可。
(这个安装过程有点慢,因为它有好多模块,我测试了下,大概需要40分钟,所以请耐心等待哈)⑪安装成功后,跳转如下界面,点击“下一步”;⑫接下来这一步,千万千万不要出错,要不就得重新开始,此时我们选择不激活,将那个“ ”去掉,然后点击完成;⑬然后,我们打开crack_win32,找到libmwservices.dll这个文件,点击复制,粘贴到D:\matlab-IDE\bin\win32下(注意:此时的这个文件夹,是我们软件的安装目录的文件夹)而不是D:\学习\mallab2015b\R2015b_win32\bin\win32这个安装包文件D:\matlab-IDE\bin\win32在第⑦步的时候提到过;⑭最后,在桌面双击启动Matlab,用crack_win32破解包里面的lic文件激活,就可以了;1>选择“在不使用Internet的情况下手动激活”,点击下一步2>点击“浏览”按钮,找到crack_win32下的license_R2015b.lic文件即可3>激活完成!4、到这里软件就安装成功了,在桌面双击即可打开。
图1实验处理程序框架结构Matlab在牛顿环实验数据处理中的应用井晨睿,廖腊梅,亓协兴,马宝红,郑亚利(洛阳师范学院物理与电子信息学院,河南洛阳471934)一、引言牛顿环干涉实验是光波波动性的代表性实验之一。
牛顿环是由凸透镜和玻璃板压制而成,其中凸透镜和玻璃板之间形成了空气薄膜,在不同位置处,由于空气薄膜厚度不同,入射光和反射光之间发生等厚干涉,从而形成了明暗相间的干涉条纹。
实验中通过测量干涉条纹位置读数,可以测定平凸透镜的曲率半径。
在实验过程中,通常需要测量的干涉条纹数目有较多,需要测量的干涉条纹位置读数很多,因此在数据处理的过程中容易出现错误。
基于此本文以Matlab 为平台,开发了数据处理脚本程序,该程序可以实现牛顿环实验中测量数据的快速查错与处理,从而使该实验数据处理的准确性和效率得到了极大地提高。
二、牛顿环实验原理牛顿环由一个曲率半径很大的平凸透镜和一块平玻璃板压制而成。
当单色平行光垂直入射到牛顿环时,空气薄膜上下表面反射的两束光之间发生相互干涉,出现明暗相间的条纹,这种干涉属于等厚干涉[1]。
假设入射光波长为λ,平凸透镜的曲率半径为R ,m 级干涉条纹半径记作r m ,由条件可知,对于第m 级暗条纹半径满足r m =mRλ√(1)假定实验中观测到第m 1和第m 2两个暗环,考虑到干涉级数修正(修正值记作j ),则两个暗环对应的干涉级数分别为m 1+j 和m 2+j 。
根据干涉条件,两个暗环对应的条纹半径应满足r m 1=(m 1+j )Rλ √(2)r m 2=(m 2+j )Rλ√(3)将以上两式两边平方相减,则有r 2m 2-r 2m 1=(m 2-m 1)Rλ(4)从(4)式中可得R =r 2m 2-r 2m 1(m 2-m 1)λ(5)从(5)式可以看出,在已知入射波长以及干涉环序数的情况下,牛顿环半径可以通过测量任意两个暗环半径求解。
由于确定牛顿环表面干涉条纹圆心位置较为麻烦,因此可以通过测量干涉圆环直径得出平凸透镜的曲率半径R ,即R =D 2m 2-D 2m 14(m 2-m 1)λ(6)其中,第m 1,m 2条干涉条纹直径分别记作D m 1,D m 2。
1.安装,使用虚拟光驱DAEMON Tools lite。
不要解压啊!解压安装很容易出错:安装过程开始:点击使用文件安装密钥,切记不能联网,否则安装不成功。
2.安装过程开始:点击使用文件安装密钥,切记不能联网,否则安装不成功。
3.接受许可协议。
4.直接输入激活码:09806-07443-53955-64350-21751-41297 点击下一步5.自己更改地址,建议直接安装C盘或者D盘6.自己选择是否安装的组件!!!!建议不太确定自己情况的,就默认吧7.选择快捷方式的位置8.安装的组件和位置9.开始最激动人心的时刻,开始安装!!!根据计算机配置不同所需时间不一,我用了一个半小时10.最后点击完成即可(不过,别急,还没结束呢,还需要激活)打开下面的目录,在安装目录下R2015b\bin\win64,双击打开activate_matlab.exe文件11.不使用网络,手动激活,这个必须选择!!12.解压Matlab 2015b Win32 Crack.rar压缩文件,点击浏览选择解压后的文件中的证书文件:\Matlab 2015b Win32 Crack\license_standalone.lic。
然后下一步。
13.激活完成,但是现在没有激活完毕!!!14.不要太心急,还没完成呢,复制解压后的文件中的R2015b目录下的bin和toolbox文件夹,粘贴到安装目录MATLAB\R2015b\下,此时选择替换目标中的文件。
解压文件:按照目录:粘贴15.按照完成,可以通过快捷方式打开了。
下面是软件打开后的界面,很亲切(中文的),但是当前文件夹那个目录实在不友好,看下面的操作16.点击预设(在哪自己找,工具栏上),然后点击左侧的常规,如下,初始工作文件夹可以更改成自己想要的。
下图是已经转换成了英文形式的17.如果你不想要中文,没关系,看到上面的桌面语言了吧,选择英文即可,下图是已经转换成了英文形式的,中文选项的位置是一样的。
一、简述下列命令在MATLAB中的作用1.clf 清除图对象2.clear 清除工作空间内的所有变量3.clc 清除当前屏幕上显示的所有内容,但不清除工作空间中的数据4.ceil 沿+∞方向取整。
5.factor 符号计算的因式分解。
6.pow2 2的幂。
7.digits(d) 设置当前的可变算术精度的位数为整数d 位。
8.vpa(pi,100) 设置当前pi的小数位数为1009.box on 打开框状坐标轴开10.grid off网格关11.logspace 创建对数刻度分度等间隔行向量12.linspace 创建等间隔行向量13.cat 串接成高维数组14.sym2poly 符号多项式转变为双精度多项式系数向量15.poly2sym 双精度多项式系数转变为向量符号多项式16.plot3 三维线图17.poly2str 以习惯方式显示多项式18.bar 二维直方图19.pie 二维饼图20.zoom on 打开图形缩放模式21.edit M文件编辑22.whos 对当前工作空间变量的信息进行列表23.figure 生成图形窗口24.cart2sph 直角坐标变为球坐标25.pol2cart 极或柱坐标变为直角坐标26.diff 数值差分、符号微分27.dsolve 符号计算解微分方程28.ezplot3 画三维曲线的简捷指令29.fix 向零取整30.factor 符号计算的因式分解二、填空题1、标点符号; 可以使命令行不显示运算结果,% 用来表示该行为注释行。
2、x为0~4pi,步长为0.1pi的向量,使用命令x=0:0.1*pi:4*pi 创建。
3、输入矩阵A=,使用全下标方式用A(2,2) 取出元素“-5”,使用单下标方式用A(5) 取出元素“-5”。
4、符号表达式sin(2*a+t)+m中主变量为t 。
5、M脚本文件和M函数文件的主要区别是M脚本文件没有函数定义和M函数文件有函数定义。
MATLAB R2015b与CCS5的连接配置一、 需要的软件C编译器:SDK7.1、VS2010、VS2008或VC6,有其一即可。
MATLAB:R2013以上版本,配置几近相同,建议R2015b之前,后续版本在安装硬件支持包时需要正版验证。
CCS:CCS5以上。
controlSUITE:controlSUITE3.4.4。
本文以SDK7.1、MATLAB R2015b、CCS5.5、controlSUITE3.4.4版本为例。
安装路径(根目录):MATLAB R2015b: D:\Program_Files\MATLAB\CCS5.5、controlSUITE: D:\Program_Files\ti\注:安装路径中尽量不要包含空格。
二、 MATLAB环境配置1.C编译器配置在matlab的command window中输入命令mex -setup,出现如下提示即为配置好。
2.安装硬件支持包(以Texas Instruments C2000为例)(1)点击MATLAB菜单HOME中的Add-Ons→Get Hardware Support Packages(2)选择Install from Internet,然后Next。
(3)选择Texas Instruments C2000,更改下面的Installation folder(建议安装至MATLAB程序的根目录下,即将SupportPackages与R2015b安装在同一个目录下),然后Next。
(4)提示登录账户,点Log In,注册新账户或者登录已有账户(注,该处仅为账户登录以获取资源,并无要求正版验证),然后接受协议并确认安装。
(5)安装完成后,提示需要其它的安装任务,点Continue。
(6)Support package for保持默认选择Texas Instruments C2000 (Embedded Coder)不变,点Next;Toolchain选择CCSv5 (C2000),点Next。
1 平台
我采用的平台:
Matlab版本R2015b(32位)(备注:R2013b版本的工具包目前国内使用的破解版本,破解不完全,不支持混合编程,切记,其余版本不知道)。
Microsoft Visual Studio版本:2010(32位),这个软件版本没有太多要求。
2 MATLAB部分
该部分主要是说明Matlab生成DLL调用文件。
2.1配置Matlab 的编译器
1. 在MATLAB 的命令窗口中输入mbuild –setup 会弹出:
(这是我已经配置好的)
未配置的时候,会弹出
在弹出的选择项中,使用默认的[y](直接回车就是选择默认值),让Matlab 自动搜索可用的编译器。
如果只安装了vs2010(如果未安装,请先安装),会弹出可选编译器为:
选择 1 回车
选择y 回车
至此,配置完成。
2.2Matlab写算法
这一部分不过多赘述,只以一个简单的示例进行说明。
算法1:矩阵与其转置矩阵相乘的代码
function [result,m,n] = GetSelfMultiplyResult(list)
% 计算矩阵与其转置矩阵的乘积
% 测试返回多个结果
result = list*list';
[m,n] = size(result);
End
算法2:矩阵各元素平方运算
function result = GetSelfSquareResult(list)
% 计算矩阵各元素平方后的结果
result = list.^2;
end
2.3Matlab生成dll文件
1.应用程序里面找到Library Compiler应用程序。
2.进入Library Compiler工程应用界面
3.配置如下
1)选择目标类型(TYPE);
2)添加需要打包的函数文件;
3)重命名库名称。
(注:Class1 改的名字不能与Matlab 的函数名字一样)4.文件生成
CalcMatResult.dll CalcMatResultNative.dll 两个dll文件,均可使用。
3 C#部分
3.1添加DLL文件
C#端用到的就是MWArray.dll 和GetSelResult.dll 这两个DLL文件。
MWArray.dll 在matlab安装目录中,参考路径:
3.2演示代码
3.2.1调用引用DLL文件
两个Matlab标准库,一个生成的Matlab算法;
3.3源代码编写
具体编程细节不在展示。
3.4结果对比C#运算结果
Matlab运算结果
结果是一致的。
4 一些注意事项
框架版本问题
创建新项目的时候,需要注意.NET版本问题,因为如果新建的项目.NET版本和Matlab转化的DLL .NET版本不一致的话,会出现DLL调用不过去的现象,报错说明是,未添加**引用。
图1 图2
图1是在新建项目的时候选取的是.NET 2.0版本,然而Matlab生成的DLL 是.NET 4.0,因此会在运行的时候报错(报错如下)。