Trouble with Implementing Moving Average Filter in MATLAB
Show older comments
I am encountering difficulties while trying to implement a moving average filter in MATLAB. I have a code snippet that I believe should work, but I am getting unexpected results. Here is the code snippet that I have tried: %Input data inputData = [1, 2, 3, 4, 5, 6, 7, 8, 9]; windowSize = 3; % Moving average filter implementation filteredData = zeros(size(inputData)); for i = 1:length(inputData) startIndex = max(1, i - windowSize); endIndex = min(length(inputData), i + windowSize); filteredData(i) = mean(inputData(startIndex:endIndex)); end
Answers (2)
%Input data
inputData = [1, 2, 3, 4, 5, 6, 7, 8, 9];
windowSize = 3;
% use matlab function
filteredData = movmean(inputData, windowSize)
% Moving average filter implementation
wS = floor((windowSize-1)/2);
filteredData = zeros(size(inputData));
for i = 1:length(inputData)
startIndex = max(1, i - wS);
endIndex = min(length(inputData), i + wS);
filteredData(i) = mean(inputData(startIndex:endIndex));
end
filteredData
Harshavardhan Putta
on 30 Jun 2023
I understand that you're encountering difficulties while implementing a moving average filter in MATLAB. You can use the movmean function in MATLAB to implement a moving average filter. The movmean function calculates the moving average of a given data sequence using a specified window size.
% Input data
inputData = [1, 2, 3, 4, 5, 6, 7, 8, 9];
windowSize = 3;
% Moving average filter implementation using movmean
filteredData = movmean(inputData, windowSize);
disp(filteredData);
Please refer to the following documentation for more information.
I hope it helps!
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!