Matlab voor filterintegratie verplaatsen

Ik moet een bewegend vensterintegratiefilter toepassen op een signaal in Matlab, ik heb de onderstaande code gevonden die het blijkbaar doet, maar ik begrijp niet hoe het werkt, kan iemand het uitleggen?

% Make impulse response
h = ones (1 ,31)/31;
Delay = 15; % Delay in samples

% Apply filter
x6 = conv (x5 ,h);
x6 = x6 (15+[1: N]);
x6 = x6/ max( abs(x6 ));
1

2 antwoord

Heb je het geprobeerd ? Het is gewoon een filter met voortschrijdend gemiddelde - niet erg goed gedaan. Het maakt gewoon een rechthoekig venster (semiwidth = 15) zodat elke waarde van het nieuwe signaal het gemiddelde is van 31 buren van de oorspronkelijke waarde (de oorspronkelijke waarde zelf, 15 rechts en 15 links). De convolutie doet het gemiddelde, de volgende regel corrigeert de "vertraging". De laatste regel is slechts een normalisatie, het heeft niets te maken met het middelingsfilter zelf.

1
toegevoegd

Ik weet niet zeker of de code die u noemt echt een filter voor filteren van bewegende vensters is, maar wat het doet:

  • definieert de impulsrespons

dan:

x6 = conv (x5 ,h);       //this applies the filter
x6 = x6 (15+[1: N]);     //this applies the delay, it should be x6 (Delay+[1:length(x5)])
x6 = x6/ max( abs(x6 ));//this normalizes the response
1
toegevoegd