Devo implementare un filtro medio su un set di dati, ma non ho accesso agli strumenti di elaborazione del segnale. C'è un modo per farlo senza usare un ciclo for? Ecco il codice che ho a lavorare:Filtro medio in MATLAB senza loop o toolbox di elaborazione dei segnali
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:
Dopo l'implementazione di una soluzione di Merv, il built-in metodo del filtro in ritardo rispetto al segnale originale. C'è un modo per aggirare questo?