繁体   English   中英

使用“ lsqcurvefit”在matlab中拟合复杂函数

[英]fitting a complex function in matlab using “lsqcurvefit”

我有一个复杂的函数,想要适合一些实际数据。 该函数的形式为:

Y = -2*imag((AB)/(A+2*B)) ...................(1)

哪里

“ imag”表示等式的虚部
A = a - (b/X)*1i ............(2)
B = c - (d/X)*1i ............(3)

Y具有虚部和实部。 但这是与我的问题有关的虚构部分。 如何通过将方程式(1)拟合到实际实验数据来得出a,b,c和d的值? 我尝试使用“ lsqcurvefit”,但它始终返回我输入的相同初始值! 我确信我一定错过了一些重要的事情。

请尽量简化您的答案,因为我还是MATLAB新手。

谢谢。

要在函数上运行lsqcurvefit,可以首先创建一个名为fm的文件,其中包含:

function Y = f(params,X)

a = params(1);
b = params(2);
c = params(3);
d = params(4);

A = a - ((b ./ X) .* 1i);
B = c - ((d ./ X) .* 1i);

Y = 2 .* imag((A - B)./(A + 2*B));

然后为此函数调用lsqcurvefit并绘制结果:

startParams = [1, 2, 3, 4];
x = 1:100;
y = f(startParams, x);
fitParams = lsqcurvefit(@f, startParams+1, x, y)

yFit = f(fitParams, x);
plot(x, y, 'b*')
hold on
plot(X, yFit, 'r')
legend('data','fit')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM