概述
此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。
此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。网络媒体或个人转载请注明出处和链接,否则属于侵权行为。
————————————————
最近在开发一款上位机,需要在.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方法参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复