2013-04-26 1 views
0

Я новый пользователь MATLAB, и мне нужно найти четыре коэффициента эффективности уравнения, которое вычисляет потери ядра в электродвигателе.MATLAB fminsearch уравнение с использованием четырех анонимных параметров

Я уже построил измеренные данные на графике и должен использовать эти результаты для определения уравнения для этого графика.

Уравнение потерь в сердечнике:

enter image description here

Из результатов измерений я отложены значения PFE (Bm) для различных значений ф, но мне нужны значения a, b, e и x.

Используя уравнение:

enter image description here

можно вычислить минимальное значение для ошибки, E с помощью нелинейного регрессионного анализа, где 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 

 Смежные вопросы

  • Нет связанных вопросов^_^