超详细的C#与MATLAB混合编程讲解,以FFT为例

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

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

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

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复制到目标解决方案的文件夹中,具体路径为:解决方案根目录\bin\x64\Debug。
还需将用于matlab与C#做转接交换的动态链接库MWArray.dll也复制到该路径下。MWArray.dll的源路径为:D:\Program Files\MATLAB\R2020a\toolbox\dotnetbuilder\bin\win64\v4.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混合编程(上).
————————————————
感谢您的阅读,如果您有收获,请给我一个三连吧!
如果您觉得这还不够,可以点击右侧的 打赏 按钮,告诉我: 你币有了!

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城外南风起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值