Triangular-weighted moving average filter
조회 수: 14 (최근 30일)
이전 댓글 표시
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
Jon
2023년 4월 13일
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
답변 (2개)
Image Analyst
2023년 4월 13일
댓글 수: 1
Dan
2025년 7월 30일
Try:
tri_weights = triang('sz');
filtered_data = conv('data', tri_weights, "same") / sum(tri_weights);
Meg Noah
2025년 8월 9일
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
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
