Я пытаюсь получить функцию прогнозирования fitgpr в символической форме.
Тип моей модели - линейная основа, точный FitMethod и точный PredictMethod. Я сохранил функцию ядра по умолчанию, поэтому она является квадратом экспоненциальной.
В этой статье говорится, что при использовании точного метода gpr я могу использовать это уравнение для прогнозирования (прикреплено как рис.)
Я кодировал (прилагается ниже) функцию в символической форме, и когда я подставляю x_new в 0, чтобы проверить вывод, мое значение отключено. Я проверил и другие значения x_new , и мой вывод символического уравнения вышел из строя на всех протестированных значениях.
Что я делаю не так?
Вот мойкод
clear all
clc
close all
rng(0,'twister'); % For reproducibility
n = 11; % n - size of dataset
c = 5; % c - drag co-efficient
xi = 0; % xi - lower bound
xf = 5; % xf - upper bound
var = 0.2; % v - variance
x = linspace(xi,xf,n)'; % populating x
y = (-c * x) + (var * randn(n,1)); % y - eqn
gprMdl = fitrgp(x,y,'Basis','Linear',...
'FitMethod','exact','PredictMethod','exact');
syms v f
sig_l = gprMdl.KernelInformation.KernelParameters(1);
sig_f = gprMdl.KernelInformation.KernelParameters(2);
f = [v 1] * [gprMdl.Beta];
for i=1:n
f = f + ((gprMdl.Alpha(i) * (sig_f^2)) * exp( -0.5 * (sig_l^(-2)) * ( v - x(i) ) ) ) ;
end
eval(subs(f,0))
predict(gprMdl,0)