使用四个匿名参数MATLAB fminsearch方程(MATLAB fminsearch equa

2019-10-29 14:28发布

我是一个新的MATLAB用户,我需要找到其计算电动机铁芯损耗的方程式的四个共同efficients。

我已经绘制在曲线图所测量的数据,并需要使用这些结果来定义该曲线的方程。

对于磁芯损耗的计算公式:

从测量的结果我已经绘制PFE(BM)的值对于f的不同的值,但我需要一个 ,B,EX的值。

用公式:

我可以通过非线性回归分析,其中Pfei是我的测量值和Pfei *是我的估计值的装置(计算误差,E的最小值在这种情况下我可能会“猜测”共efficients的初始值)。

如何使用fminsearch函数来计算最小误差值,从而计算出上述共同efficients的价值?

Answer 1:

你可以不喜欢下面的代码。 载体fitParams将有A,B,e和x的值。

function [fitParams, fval] = callMinEx()
Bm = 1:100;

% fake data.  Use your actual data for pfei
x0 = [2,3,4,5];
pfei = coreLoss(Bm, x0) + 5e10*rand(1,length(Bm));

% call fminsearch with some initial parameters
startParams = [3,3,3,3];
[fitParams,fval] = fminsearch(@func2Minimize, startParams);

% plot data and fit
plot(Bm,pfei,'r*');
hold on
plot(Bm, coreLoss(Bm, x0));
legend('data','fit')

     % The equation to be minimized by fminsearch
    function epsValue = func2Minimize(params)
        pfeStar = coreLoss(Bm,params);
        epsValue = sum(((pfei - pfeStar) ./ pfei).^ 2);
    end

    % core loss function
    function pfei = coreLoss(Bm, x0)
        a = x0(1);
        b = x0(2);
        e = x0(3);
        x = x0(4);

        f = 100;

        pfei =  a * f * Bm .^ x + b * (f * Bm).^2 + e * (f * Bm).^1.5;
    end

end


文章来源: MATLAB fminsearch equation using four anonymous parameters