引言:矩陣轉換,是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);//*單參數
}
生成結果如下: