Skip to content

Instantly share code, notes, and snippets.

@ninedraft
Created April 15, 2017 10:24
Show Gist options
  • Save ninedraft/10d96101c2025597f0fa6d3abd7e5e2e to your computer and use it in GitHub Desktop.
Save ninedraft/10d96101c2025597f0fa6d3abd7e5e2e to your computer and use it in GitHub Desktop.
% SN - массив сигнала
% window - размер окна сглаживания
window = 5;
if(mod(window,2)==0)
window=window+1;
end
%размах окна влево и вправо от текущей позиции
hw=(window-1)/2;
n=length(SN);
result=zeros(n,1);
result(1)=SN(1);
for i=2:n
init_sum = 0;
if(i<=hw) %если индекс меньше половины окна, мы находимся в начале массива,
%нужно брать окно меньшего размера
k1=1; %в качестве начала окна берем первый элемент
k2=2*i-1; %конец окна
z=k2; %текущий размер окна
elseif (i+hw>n) %если индекс+половина окна больше n - мы приближаемся к концу массива и размер окна
%также нужно уменьшать
k1=i-n+i; %начало окна
k2=n; %конец окна - последний элемент массива
z=k2-k1; %размер окна
else %если первые два условия не выполняются, мы в середине массива
k1=i-hw;
k2=i+hw;
z=window;
end
for j=k1:k2 %организуем цикл от начала до конца окна
init_sum=init_sum+SN(j); %складываем все элементы
end
result(i)=init_sum/(z); %и делим на текущий размер окна
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment