Triangular-weighted moving average filter
Afficher commentaires plus anciens
Hi,
I`m looking for function or source code for Triangular-weighted moving average filter to apply it and make my data processing.
High-frequency noise shall be removed from the measured signals using a triangular-weighted moving average with a smoothing width of 100 ms.
can someone share the experience ?
2 commentaires
Jon
le 13 Avr 2023
Is this a homework problem? If so please see https://www.mathworks.com/matlabcentral/answers/8626-how-do-i-get-help-on-homework-questions-on-matlab-answers
Mateusz Rzeszowski
le 13 Avr 2023
Réponses (2)
Image Analyst
le 13 Avr 2023
0 votes
1 commentaire
Dan
le 30 Juil 2025
Try:
tri_weights = triang('sz');
filtered_data = conv('data', tri_weights, "same") / sum(tri_weights);
Here's an example of high frequency noise being removed with a triangular filter, if by width you mean the base of the triangle:
signal = repmat([zeros(1,500) ones(1,2000) zeros(1,500)],1,10);
time_ms = 0.1*(1:numel(signal));
dt_ms = time_ms(2)-time_ms(1);
filter = triang(round(100/dt_ms))/sum(triang(round(100/dt_ms)));
fprintf(1,'Sum of energy conserving filter should be 1 = %f\n', sum(filter(:)));
fprintf(1,'Filter width = %d samples = %f ms',numel(filter),numel(filter)*dt_ms);
smooth_signal = conv(signal,filter,'same');
plot(time_ms,signal,'b','DisplayName','Signal');
hold on
plot(time_ms,smooth_signal,'r','DisplayName','Smoothed Signal');
legend('location','best');
xlabel('Time [ms]');
ylabel('Signal');
You can also apply the convolution theorem to do it with Fourier transforms.
Catégories
En savoir plus sur Get Started with Signal Processing Toolbox dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
