clear all
clc
close all
fs= 10000
t = (0:1/fs:(1-(1/fs)));
f= 4000
alpha= (f*pi)/500
y = 10*exp(-alpha*t).*sin(2*pi*f*t);
figure
plot(t,y)
N1=10000
S =fft(y,N1);
F1=S(1:N1/2);
PF1=2*F1.*conj(F1)/(fs*N1);
E=sum(PF1)
Xdb = 20*log10(S);
LPF1=10*log10(PF1);
w=(1:N1/2);
LP=LPF1(1:N1/2);
w1=fs*w/N1;
figure
plot(w1,LP)
BB= LP
CC= w1
E1 = max(LP)
t1= max(t)
talph1= E / -t1
[max_Z, max_index]=max(BB)
threedb=max_Z*sqrt(2)/2;
[db_Z,index_db] = min(abs(BB.'-threedb)-max_Z)
[pk,loc] = findpeaks(BB,'Npeaks',1,'SortStr','descend');
ofst= 12
for k1 = 1:length(pk)
varmtx=[(BB(loc(k1)-ofst:loc(k1)));CC(loc(k1)-ofst:loc(k1));(BB(loc(k1):loc(k1)+ofst));CC(loc(k1):loc(k1)+ofst)]
dBpts(k1,1:2) = interp1(varmtx(1,:), varmtx(2,:), -(db_Z), 'linear','extrap');
dBpts(k1,3:4) = interp1(varmtx(3,:),varmtx(4,:), -(db_Z), 'linear','extrap');
end
figure(3)
plot(CC, BB)
hold on
for k1 = 1:length(pk)
plot(dBpts(k1,:), -(db_Z), 'r+')
end
hold off
grid
F_1 = dBpts(k1,1:2)
F_1 = F_1(1)
F_2 = dBpts(k1,3:4)
F_2 =F_2(1)
BW = (F_2)-(F_1)
Q = abs((loc-1)*(1/BW))