[samples,channels] = size(signal);
[locs1, pks1]=peakseek(signal1,minpeakdist,minpeakh);
period = mean(diff(t1(locs1)));
newsignal(:,ck) = decimate(signal(:,ck),decim);
samples = length(signal);
time = (0:samples-1)*1/Fs;
[b,a] = butter(N_bpf,2/Fs*[f_low f_high]);
signal = filtfilt(b,a,signal);
den1z=[1 -2*rho*cos(w0) rho^2];
signal = filtfilt(num1z,den1z,signal);
[S,F,T] = myspecgram(signal, Fs, nfft, overlap);
sg_dB = 20*log10(abs(S));
min_disp_dB = round(max(max(sg_dB))) - dB_range;
caxis([min_disp_dB min_disp_dB+dB_range]);
set(get(hcb,'Title'),'String','dB')
function [ZxP,ZxN] = find_zc(x,y,threshold)
zci = @(data) find(diff(sign(data))>0);
ZeroX = @(x0,y0,x1,y1) x0 - (y0.*(x0 - x1))./(y0 - y1);
ZxP = ZeroX(x(ix),y(ix),x(ix+1),y(ix+1));
zci = @(data) find(diff(sign(data))<0);
ZeroX = @(x0,y0,x1,y1) x0 - (y0.*(x0 - x1))./(y0 - y1);
ZxN = ZeroX(x(ix),y(ix),x(ix+1),y(ix+1));
function [fft_specgram,freq_vector,time] = myspecgram(signal, Fs, nfft, Overlap)
samples = length(signal);
s_tmp((1:samples),:) = signal;
offset = fix((1-Overlap)*nfft);
spectnum = 1+ fix((samples-nfft)/offset);
sw = signal((1+start):(start+nfft)).*window;
fft_specgram = [fft_specgram abs(fft(sw))*4/nfft];
select = (1:(nfft+1)/2)';
fft_specgram = fft_specgram(select,:);
freq_vector = (select - 1)*Fs/nfft;
time = ((0:spectnum-1)*offset + round(nfft/2))/Fs;