Octave leasqr делает только одну итерацию

Поскольку я пытаюсь приспособить функцию к некоторым экспериментальным данным, я написал функцию с тремя входами, тремя параметрами и одним выходом:

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 итераций и выдает правильные результаты.

Но когда я загружаю x1 из моих экспериментальных данных (текстовый файл с тремя столбцами, около 1500 строк), а также из y1 (текстовый файл с таким же количеством строк) и запускаю ту же функцию, он выполняет только одну итерацию, и не меняет параметры.

Это даже показывает, что поля ошибок очень высоки:

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

Второй и третий параметры имеют разные значения дальше по линии.

0 ответов

Другие вопросы по тегам