Learn practical skills, build real-world projects, and advance your career
Updated 2 years ago
!pip install jovian --upgrade --quiet
import jovian
jovian.commit(project='first-steps-with-python')
import numpy as np
import cmath as c
import math as m
def calPSD(g,N,fs,w,olp):
# defining wk
wk=[]
if w=='hann':
for i in range(0,N):
wk.append(0.5*(1-np.cos(2*np.pi*i/(N-1))))
elif w=='hamming':
for i in range(0,N):
wk.append(0.54-0.46*np.cos(2*np.pi*i/(N-1)))
elif w=='bartlett':
if N%2==1:
for i in range(0,m.floor((N-1)/2)+1):
wk.append(2*i/(N-1))
for i in range(m.floor((N-1)/2)+1,N):
wk.append(2-2*i/(N-1))
elif N%2==0:
for i in range(0,m.floor((N-1)/2)+1):
wk.append(2*i/(N-1))
for i in range(m.floor((N-1)/2)+1,N):
wk.append(2-2*i/(N-1))
def blockify(g,N,olp):
blocks=[]
i=0
o=round(N*(1-olp/100))
while i<(len(g)):
temp=[]
for j in range(0,N):
if (i+j)<len(g):
temp.append(g[i+j])
blocks.append(temp)
i=i+o
return blocks
blocks=blockify(g,N,olp)
# defining the main function
if N%2==0:
for n in range(0, N/2+1):
for l in range(0,len(blocks)):
e=0
if l!=(len(blocks)-1):
s=0
for k in range(0,N):
s=s+wk[k]*blocks[l][k]*np.exp(-2*np.pi*j*n*k/N)
elif l==(len(blocks)-1):
elif N%2==1:
for i in range(0, m.floor(N/2)+1):
f=[1,2,3,4,5,6,7,8,9,10]
def blockify(g,N,olp):
blocks=[]
i=0
o=round(N*(1-olp/100))
while i<(len(g)):
temp=[]
for j in range(0,N):
if (i+j)<len(g):
temp.append(g[i+j])
blocks.append(temp)
i=i+o
return blocks
a=blockify(f,3,33)
a
[[1, 2, 3], [3, 4, 5], [5, 6, 7], [7, 8, 9], [9, 10]]