Посадка поверхности с 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);
Есть идеи, в чем проблема?