Jumat, 06 September 2019

Matlab - Smooth The Data and Find Major Peaks


 Source: https://www.coldwellbankerhomes.com/ut/heber-city/2181-e-signal-peak-ct-lot-771/pid_32077326/

Data yang secara real didapatkan akan banyak terdapat beberapa gangguan sehingga plot data tersebut tidak semulus apa yang kita harapkan, oleh hal tersebut, maka diperlukan beberapa hal kecil untuk mengubahnya agar lebih smooth. Sebuah plot grafik terkadang dijumpai dalam kondisi yang noise seperti berikut:




 Bila dilihat sekilas, maka banyak ‘gerigi’ atau noise yang cukup mengganggu agar bisa dihilangkan, sehingga find peak dapat ditentukan dengan lebih akurat.
 Bila dibandingkan dengan data tersebut di ‘smooth’ menggunakan operasi konvolusi berikut ini
Maka hasilnya akan terlihat lebih ‘clear’. Operasi diatas menggunakan kernel gaussian.



clc;clear all;close all;
data = load('data.txt');
g = gausswin(30); % <-- this value determines the width of the smoothing window
g = g/sum(g);
data2 = conv(data, g, 'same');
[pks,locs] = findpeaks(data2,1:length(data2),'MinPeakDistance',20,'MinPeakWidth',10);
 
figure()
plot(data2);
xlabel('x','fontsize',18);
xticks([0:50:length(data)+100])
xtickangle(45)
yticks([]);
grid on;
title('Data Sinyal')
hold on;
text(locs+.02,pks,num2str((1:numel(pks))'))



Tidak ada komentar: