How to do Gaussian Filter 1D?

428 views (last 30 days)
Tyann Hardyn
Tyann Hardyn on 11 Dec 2021
Edited: Tyann Hardyn on 11 Dec 2021
Hi, Community
I wanna ask about how to do a Gaussian Filter in just 1D data.... So i have a data vector based on time series like this :
And i want to filter the data by using Gaussian Filter. So, Anyone, How to do that? Thank you so much....

Accepted Answer

Chunru
Chunru on 11 Dec 2021
x = readtimetable("IAGA Daily Magnetic Data (1m) Extraction 04-Jul-2021 (CTS).txt")
x = 1440×8 timetable
Time Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 __________ ________ _____ _____ _____ ____ _____ _____ _____ 2021-07-04 00:00:00 22494 47892 47882 0 22494 23.58 42280 2021-07-04 00:01:00 22494 47891 47882 0 22494 23.54 42280 2021-07-04 00:02:00 22494 47891 47882 0 22494 23.58 42280 2021-07-04 00:03:00 22494 47891 47882 0 22494 23.51 42280 2021-07-04 00:04:00 22494 47891 47882 0 22494 23.62 42280 2021-07-04 00:05:00 22494 47891 47882 0 22494 23.77 42280 2021-07-04 00:06:00 22494 47891 47881 0 22494 23.84 42280 2021-07-04 00:07:00 22494 47891 47881 0 22494 23.88 42280 2021-07-04 00:08:00 22494 47891 47881 0 22494 23.92 42280 2021-07-04 00:09:00 22494 47891 47882 0 22494 23.99 42280 2021-07-04 00:10:00 22494 47891 47882 0 22494 24.07 42280 2021-07-04 00:11:00 22494 47892 47882 0 22494 24.18 42280 2021-07-04 00:12:00 22494 47892 47882 0 22494 24.18 42280 2021-07-04 00:13:00 22495 47892 47882 0 22495 24.33 42280 2021-07-04 00:14:00 22495 47892 47882 0 22495 24.37 42280 2021-07-04 00:15:00 22495 47892 47882 0 22495 24.33 42280
w = gausswin(10, 2.5);
w = w/sum(w);
y = filter(w, 1, x.Var7);
plot(x.Var7, 'r'); hold on; plot(y, 'b');
legend('original', 'filtered')
  2 Comments
Tyann Hardyn
Tyann Hardyn on 11 Dec 2021
Thats so Great, Sir. I ll try with Gausswin function right now. Because Iam trying by using :
data_noise = fullfile("Path", "IAGA Daily Magnetic Data (1m) Extraction 04-Jul-2021 (CTS).txt")
data_noise0 = detectImportOptions(data_noise, 'NumHeaderLines',0,'Delimiter', ' ', 'Whitespace', ' ',...
'ConsecutiveDelimitersRule', 'join', 'EmptyLineRule', 'skip', 'FileType','text');
data0_komph = data0.Var3;
time_ori = string(data0.Var2);
l_wak = length(data0_komph);
gauss_filt = fspecial('gaussian',[l_wak 1] ,10);
gauss_komph = conv(data0_komph,gauss_filt, 'same');
plot(time_ori, gauss_komph);
and the result is weird :
Its maybe the both of side (gauss filter) part which is symmetry was still remain....
Iam so grateful that someone can give me an Input Idea.... Thank You So Much
Tyann Hardyn
Tyann Hardyn on 11 Dec 2021
Edited: Tyann Hardyn on 11 Dec 2021
Hi, Chunru
I have a problem when plotting the gaussian filter result and the original data....
What is x component you re used in Plot? Why it become a range between 0 - 1500 instead of time series data, which mean from 2021-07-04 00:00:00 until 2021-07-04 23:59:00?
I actually have a problem in Var6 Plot. I need to filter the var6 (Horizontal Magnetic Component) and not in var7

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!