1

当我试图将函数拟合到一些实验数据时,我编写了一个具有三个输入、三个参数和一个输出的函数:

qrfunc = @(x, p) exp(-1*p(1)*x(:,1) - p(2)*x(:,2))+p(3)*x(:,3)+20;

当我生成一些输入和输出值时:

pS = [0.5; 0.3; 0.3];
x1 = [1 1 1; 1 1.1 1; 1 1.1 1.1; 2 1.2 2];
y1 = qrfunc(x1, pS);

并调用 leasqr 函数:

pin =[1; 1; 1];
[f1, p1, kvg1, iter1, corp1, covp1, covr1, stdresid1, Z1, r21] = leasqr(x1, y1, pin, qrfunc, 0.0001);

这工作正常,该函数进行 7 次迭代并提供正确的输出。

但是当我从我的实验数据(一个包含三列,大约 1500 行的文本文件)以及我的 y1(一个具有相同行数的文本文件)加载 x1 并运行相同的函数时,它只进行一次迭代,并且不改变参数。

它甚至表明误差幅度非常高:

sqrt(diag(covp1))
ans =
3.0281e+004
3.7614e+005
1.9477e-002

我究竟做错了什么?没有错误消息,没有“未实现收敛”或类似的东西......

编辑:数据是用命令加载的:

load "input.txt"
load "output.txt"

装载证明:

size(input)
ans =
 1540      3

我的输入文件的前几行:

10    0.4    5
20    0.4    5
30    0.4    5
40    0.4    5
50    0.4    5

第二个和第三个参数在后面有不同的值。

4

0 回答 0