手把手教你与m混合编程_第1页
手把手教你与m混合编程_第2页
手把手教你与m混合编程_第3页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 标题手把你 C#与混合编程2.需求描述客户已经在中编辑好了算法,现在想利用 C#强大的图形界面功能进行显示,同时做成安装包进行发布应该如何操作?中有大量的算法工具,比如说 DSP 等算法工具,是否可以将该工具包进行封装成类进行调用,这样就不需要每次大量混合编程工作了?3.,C#,混合编程,DSP软件版本:2013a(64bits),Visual Studio 2015(bits),.NET 4.04. 应用详述第一步:编写 M 函数,并测试可以使用:做一个简单的算法的封装,只先将的 FFT 进行封装。首先在中创建一个.m 的文件,源码如下,如图 1 所示:function Y = FFT

2、(X,N)y=fft(X,N);Y=abs(y);%对信号进行快速Fourier变换%取Fourier变换的振幅图 1注意,混编必须是 m 函数 function 的形式才能被调用。上述函数简单测试一下,没有问题(复杂的函数一定要多测试,否则后续调试非常)。继续下一步。第二步:在中使用 deploytool 建立混编项目在工作区输入命令:deploytool,然后得到下面界面,输入混编项目的名称,选择位置,关键的是类型那里一定要选择.NET Assembly。如下图 2 所示:图 2选择“OK”之后,下一步界面右侧会出现项目解决方案,需要添加类名称和 M 文件。这个类名称,就是编译完成之后 C

3、#项目中的类对象名称,然后添“FFT.m”,然后编译即可,如下图 3 所示:们刚才上一步编写的图 3到此为止,一个常规 简单的.NET 混编已经完成了 60%了。编译完成之后,打开“Package”选项卡,即可看到生成的 dll 文件,然后点击右键,打开文件夹即可,如下图所示:图 4第三步:C#中添加的 dll打开 VS2015 创建一个窗体的应用程序,主要需要完成的是 DLL 的(matPrj)src 文件夹下的 FFTDemo.dll添加,将工程和 D:ProgramFilesR2013atoolboxdotnetbuilderbinwin64v2.0(前边为的安装路径)文件夹下的 MWA

4、rray.dll 添加到项目中去,如图 5 所示。其中 MWArray 主要的作用是做将与 C#中的数据进行转换交接。主要的是,本身来说是一种比较松散的语言,在整个算法编程过程中并没有定义出来类似于 C#中的多种数据类型,如 double,float 或者int 等数据类型,所以在混个编程数据交接过程中需要有一个 dll 进行数据类型的转换的。图 5同时需要添加以下名空间在系统中:/用户自行添加名空间using FFTDemo;/这是我们定义的using MathWorks. using MathWorks.NET.Arrays;/在MWArray.dll中,最常用的.NET.Utility;

5、/在 MWArray.dll 中,最常用的在使用过程总,我们可以这样理解,我们之前编译好的 dll 就是一个类,我们首先需要将这个类进行实例化,然后每一个我们编写好的.m 文件都是一个方法。所以首先要做的就是将类进行实例化,整体的代码如下所示,利用 SeeSharp 所生成波形,利用中的 dll 算法继续 FFT分析同时进行显示,其中单机 Button2 时候的部分就是混合编程调用 FFT 的部分:namespace FFTdemopublic partial class Form1 : Formpublic Form1()InitializeComponent();FFTdemo fft =

6、 new FFTdemo(); Stopwatch sw = new Stopwatch(); Stopwatch sw1 = new Stopwatch();private double wave = new double100000; private double nosie = new double100000;private void button1_Click(object sender, EventArgs e)label3.Text = (trackBar1.Value * 100).ToString() + Hz;Generation.SineWave(ref wave, 5,

7、 0, trackBar1.Value * 100, 10000); Generation.UniformWhiteNoise(ref nosie); ArrayCalculation.Add(wave, nosie, ref wave); easyChart1.Plot(wave);private void button2_Click(object sender, EventArgs e)button2.Enabled = false;MWNumericArray MWArray x = 10000; sw.Start();var k = fft.FFT( sw.Stop();Wave =

8、wave;Wave, x);easyChart2.Plot(double,)k.ToArray(); label1.Text = sw.ElapsedMilliseconds.ToString(); sw.Reset();button2.Enabled = true;测试结果,混合编程的结果与中的测试结果一定是一致的,而且整体来说做100K 个点 FFT 变换效率也不错,大概在 01ms 左右的范围内。图 6写在后面的话:1. 混合编程虽然可以脱离环境,但是必须安装运行时MCR,并且开发版本和运行版本的 MCR 要对应,否则会出错误,权的。在程序中进行说明。其中 MCR 安装是不需要版2本来说做混合编程并不是一个比较复杂的事情,唯一的难点其实是在 C#与中数据转化的内容,其实这一部分在示去操作就可以了。自带的帮助文档是有写的。所以我们只需按照帮助文档的提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论