【问题标题】:MATLAB fminsearch equation using four anonymous parametersMATLAB fminsearch 方程使用四个匿名参数
【发布时间】:2013-04-20 20:10:22
【问题描述】:

我是一个新的 MATLAB 用户,我需要找到计算电动机铁芯损耗的方程的四个系数。

我已经在图表上绘制了测量数据,需要使用这些结果为该图表定义方程。

铁损方程:

根据测量结果,我为 f 的不同值绘制了 Pfe(Bm) 的值,但我需要 a 的值>、bex

使用等式:

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

如何使用fminsearch 函数计算最小误差值,进而计算出上述系数的值?

【问题讨论】:

    标签: matlab fminsearch


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多