%Matthew Mobley
%Filter arbitrary data contained in a .mat file
%Largely adapted from http://dadorran.wordpress.com search for filtering matlab demo
clear all;
%==============================DEFINITIONS================================%
%load data
[FileName,PathName] = uigetfile('*.mat','Select the .mat-file');
X = importdata(FileName);
%define filter parameters (here a 4th order lowpass butterworth filter
%centered at 0.05*pi rad/sample is the default)
prompt = {'Enter Filter Order:','Enter Filter Frequency:', 'Select Filter Type'};
dlg_title = 'Filter Parameters';
num_lines = 1;
def = {'4','0.05','low'};
answer = inputdlg(prompt,dlg_title,num_lines,def);
FilterOrder = str2double(answer(1));
f0 = str2double(answer(2));
filtertype = char(answer(3));
[b a] = butter(FilterOrder, f0, filtertype);
%=========================================================================%
%============================FFT & FILTER PLOT============================%
%take fft of data
X_mags = abs(fft(X));
num_bins = length(X_mags);
%normalize magnitudes
normX_mags = X_mags./(max(X_mags));
%plot frequency spectrum
plot([0:1/(num_bins/2 -1):1], normX_mags(1:num_bins/2))
xlabel('Normalized Frequency (pi rads/sample)')
ylabel('Normalized Magnitude')
%store filter response curve in H
H = freqz(b,a, floor(num_bins/2));
%plot filter response curve
hold on
plot([0:1/(num_bins/2 -1):1], abs(H),'r');
legend('Normalized Frequency Data', 'Applied Filter Response');
%=========================================================================%
%=======================COMPARATIVE TIME SERIES PLOT======================%
figure(2);
%filter temperature data
Tfiltered = filter(b,a, X);
Page 1 of 3Data_Filtering
5/22/2015file:///C:/Users/Owner/Documents/Experiment%20Design/html/Data_Filtering.html
%plot time series data
subplot(2,1,1), plot(X), title('Unfiltered Data'), xlabel('Sample'), ylabel
('Absolute Magnitude');
subplot(2,1,2), plot(Tfiltered), title('Filtered Data'), xlabel('Sample'), ylabel
('Absolute Magnitude');
%=========================================================================%
Page 2 of 3Data_Filtering
5/22/2015file:///C:/Users/Owner/Documents/Experiment%20Design/html/Data_Filtering.html
Published with MATLAB® R2012b
Page 3 of 3Data_Filtering
5/22/2015file:///C:/Users/Owner/Documents/Experiment%20Design/html/Data_Filtering.html

Filtering

  • 1.
    %Matthew Mobley %Filter arbitrarydata contained in a .mat file %Largely adapted from http://dadorran.wordpress.com search for filtering matlab demo clear all; %==============================DEFINITIONS================================% %load data [FileName,PathName] = uigetfile('*.mat','Select the .mat-file'); X = importdata(FileName); %define filter parameters (here a 4th order lowpass butterworth filter %centered at 0.05*pi rad/sample is the default) prompt = {'Enter Filter Order:','Enter Filter Frequency:', 'Select Filter Type'}; dlg_title = 'Filter Parameters'; num_lines = 1; def = {'4','0.05','low'}; answer = inputdlg(prompt,dlg_title,num_lines,def); FilterOrder = str2double(answer(1)); f0 = str2double(answer(2)); filtertype = char(answer(3)); [b a] = butter(FilterOrder, f0, filtertype); %=========================================================================% %============================FFT & FILTER PLOT============================% %take fft of data X_mags = abs(fft(X)); num_bins = length(X_mags); %normalize magnitudes normX_mags = X_mags./(max(X_mags)); %plot frequency spectrum plot([0:1/(num_bins/2 -1):1], normX_mags(1:num_bins/2)) xlabel('Normalized Frequency (pi rads/sample)') ylabel('Normalized Magnitude') %store filter response curve in H H = freqz(b,a, floor(num_bins/2)); %plot filter response curve hold on plot([0:1/(num_bins/2 -1):1], abs(H),'r'); legend('Normalized Frequency Data', 'Applied Filter Response'); %=========================================================================% %=======================COMPARATIVE TIME SERIES PLOT======================% figure(2); %filter temperature data Tfiltered = filter(b,a, X); Page 1 of 3Data_Filtering 5/22/2015file:///C:/Users/Owner/Documents/Experiment%20Design/html/Data_Filtering.html
  • 2.
    %plot time seriesdata subplot(2,1,1), plot(X), title('Unfiltered Data'), xlabel('Sample'), ylabel ('Absolute Magnitude'); subplot(2,1,2), plot(Tfiltered), title('Filtered Data'), xlabel('Sample'), ylabel ('Absolute Magnitude'); %=========================================================================% Page 2 of 3Data_Filtering 5/22/2015file:///C:/Users/Owner/Documents/Experiment%20Design/html/Data_Filtering.html
  • 3.
    Published with MATLAB®R2012b Page 3 of 3Data_Filtering 5/22/2015file:///C:/Users/Owner/Documents/Experiment%20Design/html/Data_Filtering.html