C#与matlab混合编程中,如何使用fit函数结果

2019-07-17 13:39发布

本人在matlab下做了一个简单的正态分布拟合函数,根据输入的x,y序列得到mu和sigma的估计值,以及y序列的正态分布曲线拟合序列y1,matlab程序如下:
function [muhat,sigmahat,muci,sigmaci,y1]=normal_fit(x,y)
   [muhat,sigmahat,muci,sigmaci]=normfit(y);
   f=fit(x.',y.','gauss1');
   y1 = f(x);
   % y1 = f.a1 * exp(-((x-f.b1)/f.c1).*((x-f.b1)/f.c1));
   %% a1=f.a1;
   %% b1=f.b1;
   %% c1=f.c1;
   %% y1 = a1*exp(-((x-b1)/c1).*((x-b1)/c1));   %%% y1 = feval(f,x)';


将上述函数normal_fit(x,y)编入名为NormalFitClass的类中,生成.Net的dll,NormalFitClass.dll


C#调用如下:
using NormalFitClass;
using MWArray;
....


private void do()
{
    double[] x = new double[12] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    double[] y = new double[12] {2, 6, 7, 9, 18, 33, 29, 16, 8, 5, 3, 1};


    NormalFitClass.NormalFitClass NFC = new NormalFitClass.NormalFitClass();
    MWNumericArray mx = (MWNumericArray)x;
    MWNumericArray my = (MWNumericArray)y;


    MWArray[] f = nfc.normal_fit(5, (MWArray)mx, (MWArray)my);  
}


问题是C#调用的最后一句normal_fit()总是报错,
对于matlab函数中的y1,提示使用cfit错误;
对于matlab函数中%注释的y1,提示使用cfit错误;
对于matlab函数中%%注释的y1,提示使用subsref错误;

对于matlab函数中%%%注释的y1,也提示错误。
我只是想通过fit(x,y,'gauss1')返回一个拟合的高斯曲线,如何可以实现?
附:如果使用muhat和sigmahat值,用1/sqrt(2*pi)/sigmahat*exp(-((x-muhat).*(x-muhat)/2/sigmahat/sigmahat))来计算,所得高斯曲线不能与原y分布一致。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。