Triangular-weighted moving average filter
14 views (last 30 days)
Show older comments
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 Comments
Jon
on 13 Apr 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
Answers (2)
Image Analyst
on 13 Apr 2023
1 Comment
Dan
on 30 Jul 2025
Try:
tri_weights = triang('sz');
filtered_data = conv('data', tri_weights, "same") / sum(tri_weights);
Meg Noah
on 9 Aug 2025 at 15:13
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.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!