我想适应与lsqcurvefit nonliniear系数,请帮助matlab(新)

7视图(30天)
我需要帮助,我想找到一个最适合的模型系数与实验值。我不知道我的情况可以通过lsqcurvefit解决或没有,但以下是我的代码:
xdata = [1.1111, 1.2097。1.3274,1.4778,1.6304,1.8750);
ydata = (1.0200, 1.0500, 1.0900, 1.1200, 1.1433, 1.1500);
h0 = 3;
b0 = 3;
b1 = (3.0600, 3.1500, 3.2700, 3.3600, 3.4300, 3.4500);
h1 = (2.7000, 2.4800, 2.2600, 2.0300, 1.8400, 1.6000);
r = 21;
temp = b1 /√(r * (h0-h1));
temp1 = temp(:,(通过));
有趣= @ (x, xdata) x (1) * xdata ^ (x (2) * exp (- x (3) * temp1)) - x (4) * h0 ^ (- x (5)) * xdata ^ x (6);
x0 =[1] 100年;
x = lsqcurvefit(有趣,x0, xdata ydata);
但是结果显示:
指数超过数组元素的数量(2)。
错误在finding_z > @ (x, xdata) x (1) * xdata ^ (x (2) * exp (- x (3) * temp1)) - x (4) * h0 ^ (- x (5)) * xdata ^ x(6)(17行)
有趣= @ (x, xdata) x (1) * xdata ^ (x (2) * exp (- x (3) * temp1)) - x (4) * h0 ^ (- x (5)) * xdata ^ x (6);
错误在lsqcurvefit(第225行)
initVals。F =函数宏指令(funfcn_x_xdata {3}, xCurrent, XDATA,变长度输入宗量{:});
错误在finding_z(19)行
x = lsqcurvefit(有趣,x0, xdata ydata);
引起的由:
失败在初始目标函数评价。LSQCURVEFIT无法继续。
该模型是这样的:
ydata = = 1.03 * (xdata) ^ (0.94 * exp (-0.45 * bf /√(r * (h0-hf)))) -0.26 * h0 ^ (-1.4) * (xdata) ^ 3.38
% ydata = b1 / b0
% xdata = h0 / h1
但是我想找到合适的系数,可以符合实验结果。
请帮我我新matlab

接受的答案

Srivardhan Gadila
Srivardhan Gadila 2021年6月12日
的大小的解决方案 x 是一样的尺寸吗 x0 因为解决使用中元素的数量 x0 和的大小 x0 确定变量的数量和大小 有趣的 接受。按上面的函数方程,因此 x0 必须有六个元素的数组。
你可以参考文档的功能 lsqcurvefit 的解释 输入参数 输出参数 为更多的信息。
你也可能会遇到一个错误w.r。t方程定义和需要改变使用的运营商 有趣的 方程与元素明智的运营商。请参考以下页面 数组和矩阵运算 为更多的信息。

更多的答案(0)

类别

找到更多的在非线性最小二乘曲线拟合)帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!