Octave 仅进行一次迭代的倍频程

Octave 仅进行一次迭代的倍频程,octave,best-fit-curve,Octave,Best Fit Curve,当我试图将函数与一些实验数据相匹配时,我编写了一个包含三个输入、三个参数和一个输出的函数: 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,

当我试图将函数与一些实验数据相匹配时,我编写了一个包含三个输入、三个参数和一个输出的函数:

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

第二个和第三个参数的值更进一步。从文本文件加载后,检查
x1
y1
的数据类型和大小。我还建议包括你用来加载它们的代码,也许还有一段文本文件(前5行或其他)好的,添加数据。。。虽然我相信我的问题是我的函数不能很好地处理我的数据。我试着用手摆弄参数,结果出人意料地没有什么效果,所以我想我必须回去重新定义我的函数…从文本文件加载
x1
y1
后,检查它们的数据类型和大小。我还建议包括你用来加载它们的代码,也许还有一段文本文件(前5行或其他)好的,添加数据。。。虽然我相信我的问题是我的函数不能很好地处理我的数据。我试图用手摆弄参数,但效果出人意料地很小,所以我想我必须回去重新定义我的函数。。。