Hi guys,
Im implementing in matlab zero crossing points to my signal , frequency sampling is 2048Khz.
my matlab code that Im using is:
y= % * my signal input* it's like sinusoidal signal
x=1:length(y);fs=2048e3; % Sampling Frequency
n=length(y); % Length of my signal
t = (0:(n-1))*(1/fs); % Time appointed for every sample, first sample at time t=0 , next tn=t0+n*(1/fs)
x=t;zci = @(v) find(v(:).*circshift(v(:), [-1 0]) <= 0);% Returns Approximate Zero-Crossing Indices Of Argument Vector
dy = zci(y);% Indices of Approximate Zero-Crossings
for k1 = 1:size(dy,1)-1 b = [[1;1] [x(dy(k1)); x(dy(k1)+1)]]\[y(dy(k1)); y(dy(k1)+1)]; % Linear Fit Near Zero-Crossings
x0(k1) = -b(1)/b(2); % Interpolate ‘Exact’ Zero Crossing
mb(:,k1) = b; % Store Parameter Estimates (Optional)
endfigure(1)plot(x, y, '-r')hold onplot(x(dy), y(dy), 'bp')hold offgrid
the output I get is this photo below but the zero crossing point isn't correct – the points of zero crossing isn't accurate, isn't the exact zero crossing points !! .. the points of zero crossing should their positions be on the line of zero – implicitly the zero crossing points should be the intersections points of x axis-:
Could anyone please help me how can I implement in matlab zero crossing points of exact zero crossing points?! thanks alot
Best Answer