Removing noise from a sine wave
Hello, I have two sets of measurement data (sine wave of 10 = Hz and fs = 2048 Hz) with lots of noise. I tried to filter them using a butterworth lowpass filter using filtfilt function.
Unfortunately, the filtered signal is not a pure sine wave and hence i couldn’t use them further.
Can anyone guide me how exactly to process this signal?
PS: Can i add .fig to my post?
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
You might try the Savitzky Golay filter, in the Signal Processing Toolbox. It fits a polynomial to the signal in a sliding window.
My demo below is for an image but you could easily adapt it to a 1D signal. After all, an image is just a bunch of 1D signals stacked on top of each other (each row or column could be considered a 1D signal). That’s what I do, just extract a row or column and call sgolayfilt() on each row or column.
% Filter using Savitzky-Golay filtering.
% By Image Analyst
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
clc; % Clear command window.
clear; % Delete all variables.
close all; % Close all figure windows except those created by imtool.
imtool close all; % Close all figure windows created by imtool.
workspace; % Make sure the workspace panel is showing.
fontSize = 14;
% Read in standard MATLAB gray scale demo image.
% imageArray = imread('football.jpg');
imageArray = imread('cameraman.tif');
imageArray = double(imageArray);
[rows columns numberOfColorBands] = size(imageArray);
subplot(2, 2, 1);
SEE COMPLETE ANSWER CLICK THE LINK