126.12K
Категория: ПрограммированиеПрограммирование

Подгонка данных полиномом второй степени в MATLAB

1.

Создание и компоновка массивов
clear; clc;
%%%%Generating arrays%%%%%%
x = 0:1:20;
y = 4*x.^2 + 7*x - 11;
noise = 50*randn(size(y));
y_noised = y + noise;
%%%%Packing of arrays%%%%%%
DataForFit = struct;
DataForFit.x = x;
DataForFit.y = y;
DataForFit.y_noised = y_noised;
DataForFit.noise = noise;
clearvars x y noise y_noised;
%%%%%%%%%%%%%%%%%%%%%%%%%%%

2.

Подгонка массива полиномом второй степени
%%%%Fitting process%%%%%%%%
f = fit(DataForFit.x',DataForFit.y_noised','poly2');
disp('---------');
disp(f);
%%%%Drawing%%%%%%%%%%%%%%%%
figure;
plot(DataForFit.x, DataForFit.y, 'LineStyle','--');
legend('reference');
hold on;
plot(f, DataForFit.x,DataForFit.y_noised);
xlabel('x');
ylabel('y');

3.

Подгонка массива полиномом второй степени с выводом статистики подгонки
%%%%Fitting process%%%%%%%%
[curve,gof,output] = fit(DataForFit.x',DataForFit.y_noised','poly2’);
disp('---------');
disp(curve);
%%%%Drawing%%%%%%%%%%%%%%%%
figure;
plot(DataForFit.x, DataForFit.y, 'LineStyle', '--');
legend('reference');
hold on;
plot(curve, DataForFit.x,DataForFit.y_noised);
xlabel('x');
ylabel('y');

4.

Содержимое gof

5.

Содержимое output

6.

Подгонка с опциями и работа в приложении Curve Fitting Tool
x_for_app = DataForFit.x;
y_for_app = DataForFit.y_noised;
Массивы для работы в приложении
%%%%Fitting process%%%%%%%%
fo = fitoptions('Method','LinearLeastSquares',...
'Lower',[1, 1, -12],...
'Upper',[5,8,-10]);
f = fit(DataForFit.x,DataForFit.y_noised,'poly2',
fo);
disp('---------');
disp(f);
%%%%Drawing%%%%%%%%%%%%%%%%
figure;
plot(DataForFit.x, DataForFit.y, 'LineStyle','--');
legend('reference');
hold on;
plot(f, DataForFit.x,DataForFit.y_noised);
xlabel('x');
English     Русский Правила