clear all; %% t=1;% Fd=512;% () A1=1;% F1=10;% () SNR=0.3;% / T=0:1/Fd:t;% Noise=A1*SNR*randn(1,length(T));% Signal=A1*sind((F1*360).*T);% SN=Signal+Noise; figure(1); subplot(4,1,1); plot(SN); subplot(4,1,2); plot(smooth(SN,3)); subplot(4,1,3); plot(smooth(SN,8)); subplot(4,1,4); plot(smooth(SN,20));
%my_smooth % , , 1 ; window = 5; if(mod(window,2)==0) window=window+1; end hw=(window-1)/2; % n=length(Signal); result=zeros(n,1); result(1)=SN(1); % SN 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
void smooth(double *input, double *output, int n, int window) { int i,j,z,k1,k2,hw; double tmp; if(fmod(window,2)==0) window++; hw=(window-1)/2; output[0]=input[0]; for (i=1;i<n;i++){ tmp=0; if(i<hw){ k1=0; k2=2*i; z=k2+1; } else if((i+hw)>(n-1)){ k1=i-n+i+1; k2=n-1; z=k2-k1+1; } else{ k1=i-hw; k2=i+hw; z=window; } for (j=k1;j<=k2;j++){ tmp=tmp+input[j]; } output[i]=tmp/z; }
Source: https://habr.com/ru/post/134375/
All Articles