Tôi cần triển khai bộ lọc trung bình trên bộ dữ liệu, nhưng tôi không có quyền truy cập vào hộp công cụ xử lý tín hiệu. Có cách nào để làm điều này mà không cần sử dụng vòng lặp for? Dưới đây là đoạn code tôi đã có làm việc:Bộ lọc trung bình trong MATLAB không có vòng lặp hoặc hộp công cụ xử lý tín hiệu
x=0:.1:10*pi;
noise=0.5*(rand(1,length(x))-0.5);
y=sin(x)+noise; %generate noisy signal
a=10; %specify moving window size
my=zeros(1,length(y)-a);
for n=a/2+1:length(y)-a/2
my(n-a/2)=mean(y(n-a/2:n+a/2)); %calculate mean for each window
end
mx=x(a/2+1:end-a/2); %truncate x array to match
plot(x,y)
hold on
plot(mx,my,'r')
EDIT:
Sau khi triển khai giải pháp Merv của, được xây dựng trong phương pháp lọc chậm tín hiệu ban đầu. Có cách nào để giái quyết vấn đề này không?