remove noise from data by polynomial fitting

14 views (last 30 days)
Hi everyone, I want to remove noise from my data and for that I want to fit a polynomial. Can anyone plz tell me how can we remove noise in matlab?
Thanks
  1 Comment
Matlabuser
Matlabuser on 27 Oct 2014
I have a time series of temperature and I want to fit a polynomial of this kind T=A (log t)+B (log t)^2+ .......... so on

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 28 Oct 2014
x = log(t);
coefficients = polyfit(x, T, 1);
See full demo (with a different equation) attached.
  4 Comments
Matlabuser
Matlabuser on 28 Oct 2014
I got It. One more thing I want to know that now this plot is plot is in between values of T obtained after logarithmic fitting and time.
Thank you so much !!!
Image Analyst
Image Analyst on 28 Oct 2014
You need to give more interpolation points, like
% Setup:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
imtool close all; % Close all imtool figures if you have the Image Processing Toolbox.
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
t=[10:100:2500];
% T=A (log t)+B (log t)^2
A = 5;
B = 3;
T = A * log(t) + B * log(t).^2
% Add noise so it's not so perfect.
T = T + 50*rand(1, length(T));
% Plot training data
plot(t, T, 'bo', 'LineWidth', 2);
grid on;
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0.1 1 .75]);
hold on;
%--------------------------------------------------------------
% Find polynomial
x=log(t); % Transform t so it's a lienar least squares situation.
% Now T = A*x + B*x^2 and we can fit a second order polynomial.
coefficients = polyfit(x,T,2)
% Interpolate additional points for a total of 300.
extra_x = linspace(x(1), x(end), 300);
fittedData = polyval(coefficients, extra_x);
% But we want to plot against t, not x so we need to recover t from extra_x.
extra_t = exp(extra_x);
plot(extra_t, fittedData, 'r*-', 'LineWidth', 2);
xlabel('t', 'FontSize', fontSize);
ylabel('T', 'FontSize', fontSize);
title('T vs. t', 'FontSize', fontSize);
legend('Training Data', 'Fit');

Sign in to comment.

More Answers (3)

Torsten
Torsten on 27 Oct 2014

Matt J
Matt J on 27 Oct 2014
Edited: Matt J on 27 Oct 2014
See the polyfit command .
  1 Comment
Matlabuser
Matlabuser on 27 Oct 2014
I already tried with command, I want to fit polynomial manually

Sign in to comment.


Matlabuser
Matlabuser on 28 Oct 2014
Can anyone please tell me how can I fit logarithmic polynomial to time series
Thanks in advance

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!