我是靠谱客的博主 英俊发夹,最近开发中收集的这篇文章主要介绍超详细的C#与MATLAB混合编程讲解,以FFT为例1.编写可用的fft函数2.生成动态链接库文件3.在.NET中添加动态链接库文件4.利用C#调用库中的myFFT方法参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。

此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。网络媒体或个人转载请注明出处和链接,否则属于侵权行为。
————————————————

最近在开发一款上位机,需要在.NET中使用fft算法求解频谱信息。比较方便的办法:在matlab中利用现成的fft函数生成动态链接库,再在.NET中使用C#调用。步骤如下:

目录

  • 1.编写可用的fft函数
  • 2.生成动态链接库文件
  • 3.在.NET中添加动态链接库文件
  • 4.利用C#调用库中的myFFT方法
  • 参考

1.编写可用的fft函数

在matlab中利用现成的fft函数编写需要的myFFT函数模块,并保存为m文件。

function Y = myFFT(X,N)
y=fft(X,N);
%对信号进行快速Fourier变换
Y=abs(y);
%取Fourier变换的振幅

2.生成动态链接库文件

在Matlab工作区输入命令:deploytool,出现:

在这里插入图片描述
点击 Library Compiler ,出现:

在这里插入图片描述
在TYPE栏选择**.Net Assembly**,并在EXPORTED FUNCTIONS栏添加目标函数myFFT

在这里插入图片描述
修改库名为myMATLABlib,类名为myMATLABlibClass

在这里插入图片描述
点击Package按钮,生成库文件包。

在这里插入图片描述
在这里插入图片描述
打包完成后,会自动弹出路径文件夹。其默认路径为matlab当前文件夹路径。文件夹里目录如下:

在这里插入图片描述
打开for_redistribution_files_only文件夹,找到myMATLABlib.dll,即为我们需要的动态链接库文件。

在这里插入图片描述

3.在.NET中添加动态链接库文件

将myMATLABlib.dll复制到目标解决方案的文件夹中,具体路径为:解决方案根目录binx64Debug。
还需将用于matlab与C#做转接交换的动态链接库MWArray.dll也复制到该路径下。MWArray.dll的源路径为:D:Program FilesMATLABR2020atoolboxdotnetbuilderbinwin64v4.0(此处仅以本机安装为例),如下图所示。

在这里插入图片描述
复制完成后,在.NET中添加引用这两个库。
在解决方案中,右键单击引用按钮,再点击添加引用

在这里插入图片描述
打开了引用管理器,此处有两个浏览按钮,点击左侧的浏览

在这里插入图片描述
随后点击下方的浏览。将上述两个动态链接库添加进来。

4.利用C#调用库中的myFFT方法

首先声明引用两个库文件。

using myMATLABlib;
using MathWorks.MATLAB.NET.Arrays;

具体化实例:

myMATLABlibClass mymatlab = new myMATLABlibClass();

求取频谱:

for (int i = 0; i < (int)N / 2; i++) //频率序列
f[i] = i * fs / N;
var Ch1_fft_result = mymatlab.myFFT(Ch1_PassFlt, N); //幅度特性

参考

1.手把手教你C#与MATLAB混合编程(上).
————————————————
感谢您的阅读,如果您有收获,请给我一个三连吧!
如果您觉得这还不够,可以点击右侧的 打赏 按钮,告诉我: 你币有了!

最后

以上就是英俊发夹为你收集整理的超详细的C#与MATLAB混合编程讲解,以FFT为例1.编写可用的fft函数2.生成动态链接库文件3.在.NET中添加动态链接库文件4.利用C#调用库中的myFFT方法参考的全部内容,希望文章能够帮你解决超详细的C#与MATLAB混合编程讲解,以FFT为例1.编写可用的fft函数2.生成动态链接库文件3.在.NET中添加动态链接库文件4.利用C#调用库中的myFFT方法参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部