Посадка поверхности с Matlab

Я собираюсь приспособить свои данные к пользовательской функции в Matlab. Я написал эти строки:

ft = fittype('amp * exp(-(((cos(theta) ^ 2 )/ (2 * sx ^ 2) + (sin(theta) ^ 2 )/ (2 * sy ^ 2)) * (X - X0) .^ 2 + 2 * (-sin(2 * theta) / (4 * sx ^ 2) + sin(2 * theta)/ (4 * sy ^ 2)) * (X - X0) .* (Y - Y0) + (((sin(theta) ^ 2 )/ (2 * sx ^ 2) + (cos(theta) ^ 2 )/ (2 * sy ^ 2)) * (Y - Y0) .^ 2)))', 'independent', {'X', 'Y'}, 'dependent', 'Z');
options = fitoptions(ft);
options.StartPoint = [900, 0, 0, 0, 15, 15];
options.Lower = [935, 0, -Inf, -Inf, 15, 20];
options.Upper = [945, 360, Inf, Inf, 20, 25];
f = fit([X, Y], Z, ft, options);

X, Y и Z - [41*38] матрицы.

Я получаю следующую ошибку после выполнения кода:

Ошибка при использовании fit>iFit (строка 127) X должна быть матрицей с одним или двумя столбцами.

Ошибка в подгонке (строка 108) [fitobj, goodness, output, convmsg] = iFit( xdatain, ydatain, fittypeobj, ...

Ошибка в gaussian2DFit (строка 32) f = fit([X, Y], Z, ft, options);

Есть идеи, в чем проблема?

0 ответов

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