Есть wave файл с двумя каналами. Нужно рассчитать на каждом периоде разницу номеров максимальных отсчетов. Количество отсчетов на периоде равно "частота дискретизации/ частоту колебания(предположим a/b)" обе величины известны. Эту разницу нужно записать в массив, чтобы дальше можно было рассчитать мат ожидание. Т.к. фаза может гулять.
Сейчас рассчитывается только на одном периоде, и номер максимального записывается в одну переменную, что не дает найти разницу.
Код:
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import wave
import struct
source=wave.open('D:\\ух\\name1.wav', mode='rb')
(nchannels, sampwidth, framerate, nframes, comptype, compname)=source.getparams() #c инэта
#kol-vo frame
#frames_count=source.getnframes()
print('всего отчетов', nframes)
print('колво каналов', nchannels)
print('число байт на сэмпл', sampwidth)
print('чиcло фрэймов в секунду', framerate)
print('тип сжатияу', comptype)
print('имя сжатияу', compname)
data=source.readframes(nframes) # в скобках frames_count
#print(data[:201])
import numpy as np
types={
1: np.int8,
2: np.int16,
3: np.int32
}
samples=np.fromstring(data,dtype=types[sampwidth])
#print(samples)
for n in range(nchannels):
channel=samples[n::nchannels] # если два канала нужно "проредить"
print(channel)
w=max(channel[0:20]) #максимальное значение для примера 20 отсчетов
print('maximum', w)
Nmax=channel[0:20].argmax() #порядковый номер максимального значения
print('номер максимум с помощью функции' , Nmax)