x = -6:1:6
y = sin(x);
figure(1);
plot(x, y);
% create a much finer spaced points in x
xi = linspace(x(1), x(end), 10000);
% interpolate to get finer spaed points for y
yi = interp1(x, y, xi);
yi(1:20)
figure();
plot(x, y, 'x'); % plot original data as individual points
hold on;
plot(xi, yi); % plot interpolate data as a line
yi1 = interp1(x, y, xi, 'nearest');
yi2 = interp1(x, y, xi, 'linear');
yi3 = interp1(x, y, xi, 'spline');
figure();
plot(x, y, 'LineStyle', 'None', 'Marker', 'x', 'DisplayName', 'Orignal', 'MarkerEdgeColor', 'green');
hold on;
plot(xi, yi1, 'DisplayName', 'nearest', 'Color', 'red');
plot(xi, yi2, 'DisplayName', 'linear', 'Color', 'black');
plot(xi, yi3, 'DisplayName', 'spline', 'Color', 'magenta');
legend('show');
x = linspace(-6, 6, 5);
y = linspace(-6, 6, 5);
[X, Y] = meshgrid(x, y);
V = X.^2 - Y.^2;
figure();
surf(X, Y, V);
% interpolate linear, more points, but same rough edges
xi = linspace(-6, 6, 50);
yi = linspace(-6, 6, 50);
[Xi, Yi] = meshgrid(xi, yi);
Vi = interp2(X, Y, V, Xi, Yi);
figure();
surf(Xi, Yi, Vi);
% spline interpolation, good for nice visuals, but not really that mathematically good
xi = linspace(-6, 6, 50);
yi = linspace(-6, 6, 50);
[Xi, Yi] = meshgrid(xi, yi);
Vi = interp2(X, Y, V, Xi, Yi, 'spline');
figure();
surf(Xi, Yi, Vi);
% use these commented commands to install the packages
%pkg install -forge control;
%pkg install -forge signal;
pkg load signal;
x = linspace(0, 10, 1000);
y = sin(x) + rand(1, length(x));
figure();
plot(x, y);
% a basic averaging filter, average of 20 points
N = 20;
a = 1;
b = 1 / N * ones(1, N);
yf = filtfilt(b, a, y);
% still some noise, but curve follows data closely
figure();
plot(x, y);
hold on;
plot(x, yf, 'LineWidth', 7);
% basic averaging filter, window size of 300
N = 300;
a = 1;
b = 1 / N * ones(1, N);
yf = filtfilt(b, a, y);
% very smooth, but not really right, doesn't track the function well
figure();
plot(x, y);
hold on;
plot(x, yf, 'LineWidth', 7);
x = linspace(-6, 6, 1000);
y = sin(x) + 0.2 * 2 * (rand(1, length(x)) - 0.5);
figure();
plot(x, y);
$f(x) = a_7 x^7 + a_6 x^6 + a_5 x^5 + a_4 x^4 + a_3 x^3 + a_2 x^2 + a_1 x + a_0$
% coefficients of a polynomial
p = polyfit(x, y, 7)
% [a7, a6, a5, a4, a3, a2, a1, a0]
figure();
plot(x, y);
hold on;
yp = polyval(p, x);
plot(x, yp, 'LineWidth', 7);
x_till_60p = x(1:floor(0.6 * length(x)));
y_till_60p = y(1:floor(0.6 * length(x)));
p = polyfit(x_till_60p, y_till_60p, 7);
figure();
plot(x, y);
hold on;
plot(x, polyval(p, x), 'LineWidth', 7);
xlim([-6, 6]);
ylim([-5, 5]);