2013-04-26 19 views
0

我是一个新的MATLAB用户,我需要找到一个计算电动机内核损耗的方程式的四个系数。MATLAB fminsearch方程使用四个匿名参数

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

对于铁损的等式:

enter image description here

从测得的结果我为的˚F不同的值作图PFE(BM)的值,但我需要的值a,b,e and x

用公式:

enter image description here

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

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

回答

0

你可以做类似下面的代码。矢量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