You are on page 1of 1

% 5

rng(42);
% (a)
% Initialise parameters and generate datapoints
N = 100;
x = linspace(-5, 5, N)';
t = 5*x.^3 - x.^2 + x + sqrt(300)*rand(N, 1);

% (b)
orders = [1 3 6];
% Fit and plot for linear, cubic and 6th order model
for i = 1:length(orders)
X = [];
for k = 0:orders(i)
X = [X x.^k];
end
% Fit given model using maximum likelihood approach
w = (X'*X)\X'*t;
ss = (1/N)*(t'*t - t'*X*w);
testmean = X*w;
testvar = ss * diag(X*((X'*X)\X'));
% Plot the data and predictions
figure(1);
hold off
subplot(1, 3, i);
plot(x,t,'k.','markersize',10);
xlabel('x');
ylabel('t');
hold on
% (c)
% Plot predictive error bars for given model
errorbar(x, testmean, testvar, 'r')
ti = sprintf('Order %g', orders(i));
title(ti);
xlim([-6 6])
ylim([-700 700])
set(gcf,'position',[50, 150, 1450, 500])
end

You might also like