引言:矩阵转换,是Matlab到.NET环境非常重要的数据转换技术;阅读本文前提是已经会Matlab在.NET环境下需要做的环境配置操作,本文实现WPF调用已设计好的Matlab算法程序。
为了让读者更加清楚Matlab在.NET环境下的混编技术,笔者简述前期环境配置。
1、若已经安装Matlab程序可以不用再去官网安装Matlab在.NET环境下的程序,若未安装Matlab需要安装相应版本的环境程序,笔者安装的是2018.b版本搭配.NET4.6 目标平台x64。
2、去NUGET管理平台下载MathNet.Numerics 和MathNet.Numerics.Data.Matlab 做引用包。
3、引入你的Matlab生成的.dll文件开始你的表演。
using MathNet.Numerics.LinearAlgebra; //*Nuget包
using MathNet.Numerics.Statistics.Mcmc; //*Nuget包
using MathNet.Numerics.Data.Matlab; //*Nuget包
using MatLabX; //*笔者的dll
using MathWorks.MATLAB.NET.Arrays; //*Nuget包
Matrix<double> m_data = MatlabReader.Read<double>(DataPath);
//*上述代码就是读取矩阵,DataPath就是 .mat矩阵文件。 得到的数据就是经过转换后的矩阵数据。
/// <summary>
/// 生成matlab图表的方法 这仅适用于笔者的matlab程序,但对矩阵是通用的。
/// </summary>
/// <param name="DanDanID"></param>
/// <param name="DanDanPara"></param>
/// <param name="m_data"></param>
private void DanDanGeneTable(int DanDanID, double DanDanPara, Matrix<double> m_data)
{
Array array = m_data.ToArray();
double[,] c_data = (double[,])array;
double[] singaldata = new double[3000];
for (int i = 0; i < 3000; i++)
{
singaldata[i] = c_data[i, DanDanID];
}
MWArray temdata = new MWNumericArray(singaldata);
MWArray vNh0 = new MWNumericArray(DanDanPara);
MatlabClass matlabClass = new MatlabClass();
matlabClass.DanCanshuStaTest(temdata, vNh0);//*单参数
}
生成结果如下: