我是一个新的 MATLAB 用户,我需要找到一个方程的四个系数来计算电动机的铁芯损耗。
我已经在图表上绘制了测量数据,需要使用这些结果来定义该图表的方程。
铁损的公式:

根据测量结果,我绘制了不同f值的Pfe (Bm) 值,但我需要a、b、e和x的值。
使用等式:

我可以通过非线性回归分析计算误差的最小值E ,其中Pfei是我的测量值,Pfei * 是我的估计值(在这种情况下,我可能会“猜测”系数的初始值)。
如何使用该fminsearch函数计算最小误差值,从而计算上述系数的值?
我是一个新的 MATLAB 用户,我需要找到一个方程的四个系数来计算电动机的铁芯损耗。
我已经在图表上绘制了测量数据,需要使用这些结果来定义该图表的方程。
铁损的公式:

根据测量结果,我绘制了不同f值的Pfe (Bm) 值,但我需要a、b、e和x的值。
使用等式:

我可以通过非线性回归分析计算误差的最小值E ,其中Pfei是我的测量值,Pfei * 是我的估计值(在这种情况下,我可能会“猜测”系数的初始值)。
如何使用该fminsearch函数计算最小误差值,从而计算上述系数的值?
您可以执行以下代码。该向量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