Adaptive Savitzky-Golay filter

1 vue (au cours des 30 derniers jours)
sarmad m
sarmad m le 2 Fév 2018
Modifié(e) : sarmad m le 5 Fév 2018
Hi
This code in matlab exchange adaptive SG
uses adaptive SG filter on a generated data and noise .
I need to apply this method on some signals , what should be changed in order to use it for my case ?
global Pkmi_array
m=(length(data_frame)-1)/2;
N=length(data_frame);
x=-m:m;
y=data_frame;
x=x(:);
y=y(:);
k_start=2;% Savitzky-Golay differentiation filters with polynomial degrees 1 and 2 are the same.
k_end=N-1-2;
alpha=0.01;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if k_end<=k_start
polynomial_degree=k_start;
return;
else
k=k_start;
p_fit=polyfit(x,y,k);%polynomial degree = k_start
res_even=sum((y-polyval(p_fit,x)).^2);
while k<k_end %%%%%%%%%%%%%%%%k=2,4,...(even)
%k
n1=k;
%polynomial degree = k
k=k+1;
value1=0;
value2=0;
for i=-m:m
value1=value1+Pkmi_array(k+2,m,i+m+1)*y(i+m+1);
value2=value2+(Pkmi_array(k+2,m,i+m+1))^2;
end
res_tmp=res_even(end)-value1^2/value2;
%polynomial degree = k+1
k=k+1;
value1=0;
value2=0;
for i=-m:m
value1=value1+Pkmi_array(k+2,m,i+m+1)*y(i+m+1);
value2=value2+(Pkmi_array(k+2,m,i+m+1))^2;
end
res_even=[res_even res_tmp-value1^2/value2];
n2=k;
v1=n2-n1;
v2=N-n2-1;
Fx=(res_even(end-1)-res_even(end))/(n2-n1)/(res_even(end)+eps)*(N-n2-1);
F_alpha=finv(1-alpha,v1,v2);
% finv is a function in the Statistics Toolbox
% Inverse of the F cumulative distribution function
if Fx<F_alpha
break;
end
end
if Fx<F_alpha
polynomial_degree=k-2;
else
polynomial_degree=k_end;
end
end
  1 commentaire
Jan
Jan le 5 Fév 2018
@sarmad m: Is this the unchanged code from FileExchange: adpf_diff? Then please delete it or append the license text. See Answers: republish code from FileExchange .
what should be changed in order to use it for my case
How could the readers know this? What is the difference between "your case" and the standard input for this function?

Connectez-vous pour commenter.

Réponses (1)

Image Analyst
Image Analyst le 2 Fév 2018
Put some code at the top of it to define, or read in, your x and y data.
  3 commentaires
Image Analyst
Image Analyst le 4 Fév 2018
Make it EASY for me to help you. csvread() did not work with your data and it's all in one column anyway so I don't know what's x and what's y. Please give me the code to read in your data file and create x and y. If you wait for me to do it, it might not be until tomorrow or later, if ever.
sarmad m
sarmad m le 5 Fév 2018
Modifié(e) : sarmad m le 5 Fév 2018
The signal like shown below
Y values are in attachments. To read Y I just do normal import and plot(Y) to show the signal .

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by