import numpy as np
from scipy.signal import firwin, lfilter, resample
from scipy.io.wavfile import write
import pandas as pd

rf = pd.read_csv("input.csv", skiprows=1,
	usecols=[0],
	header=None).to_numpy().flatten() #
	input.csvからデータ読み込み
fc = 8e3	# カットオフ周波数(8kHz)
N = 100	# フィルタ次数
fs = 2.5e6	# オシロスコープのサンプリング周波数
fs2 = 48e3	# ダウンサンプリング周波数
lpf8k = firwin(N+1, fc/(fs2/2)) #正規化カットオフ周波数でFIRフィルタ生成
f_lo1 = 954e3	# 受信周波数(954kHz)
len_rf = len(rf)	# データ長を取得
t = np.arange(len_rf)/fs # 時間
lo1I = np.cos(2*np.pi*f_lo1*t) # I信号生成
lo1Q = -np.sin(2*np.pi*f_lo1*t) # Q信号生成
lo1I_48k = resample(rf*lo1I, int(len_rf*fs2/fs))# ダウンサンプリング
lo1Q_48k = resample(rf*lo1Q, int(len_rf*fs2/fs))# ダウンサンプリング
zero_I = lfilter(lpf8k, 1, lo1I_48k) # LPF処理
zero_Q = lfilter(lpf8k, 1, lo1Q_48k) # LPF処理
amp = np.sqrt(zero_I**2 + zero_Q**2) # IQの絶対値
lf = amp - np.mean(amp) # DC成分除去
lf = lf/np.max(np.abs(lf)) # 振幅正規化
write("out_py.wav", int(fs2), lf) #WAVファイル書き込み