import argparse
import os
from fft import fft_calling
import matplotlib.pyplot as plt
import numpy as np
from configure_for_processing import ellipse_result_path
from scipy import signal
def read_data_according_rows(signal_file_path=None, start_point=None,
end_point=None):
signal_all = np.loadtxt(signal_file_path, skiprows=1)
S = signal_all[int(start_point):int(end_point)]
del signal_all
return S
def main(id=None, signal_file_path=None, start_point=None,
end_point=None, rp=None, rs=None, fs=None, n=None, wn1=None, wn2=None, f_type=None):
sig = read_data_according_rows(signal_file_path=signal_file_path,
start_point=start_point, end_point=end_point)
t=np.linspace(0.0,len(sig)/fs,len(sig))
# 截止频率
if f_type == 'bandpass' or f_type == 'bandstop' or f_type == 'bp' or f_type == 'bs':
wn = [wn1, wn2]
# return wn
else:
wn = wn1
# return wn
# 滤波器
sos = signal.ellip(n, rp, rs, wn, f_type, fs=fs, output='sos') # 二阶截面显示
filtered1 = signal.sosfilt(sos, sig)
filtered = filtered1 * np.power(10, (rp / 20))
fft_abs_original,_,fre_original=fft_calling(sig,fs)
fft_abs_filter, _, fre_filter = fft_calling(filtered, fs)
# 存储文件
result_path = ellipse_result_path
if os.path.exists(result_path) == 0:
os.makedirs(result_path)
np.savetxt(result_path + str(id) + "filtered.txt",
filtered, fmt='%.8e', delimiter=",")
np.savetxt(result_path + str(id) + "original.txt",
sig, fmt='%.8e', delimiter=",")
np.savetxt(result_path + str(id) + "time.txt",
t, fmt='%.8e', delimiter=",")
np.savetxt(result_path + str(id) + "fft_abs_ori.txt",
fft_abs_original, fmt='%.8e', delimiter=",")
np.savetxt(result_path + str(id) + "fft_fre.txt",
fre_filter, fmt='%.8e', delimiter=",")
np.savetxt(result_path + str(id) + "fft_abs_fil.txt",
fft_abs_filter, fmt='%.8e', delimiter=",")
np.savetxt(result_path + str(id) + 'finish.txt', [])
# print("ellip done")
if __name__ == "__main__":
parser=argparse.ArgumentParser()
parser.add_argument('--id',type=str,dest='id',help='输入文件id')
parser.add_argument('--signal_file_path', "-spath", type=str, help='原始文件路径')
parser.add_argument("--start_point", "-spt", type=int, help="数据起始点")
parser.add_argument("--end_point", "-ept", type=int, help="数据终止点")
parser.add_argument("--rp", "-rp", type=float, help="最大通带波纹(dB)")
parser.add_argument("--rs", "-rs", type=float, help="最小阻带衰减(dB)")
parser.add_argument('--fs',type=float ,dest='fs',help='采样频率')
parser.add_argument('--n',type=int,default=2,help='阶数')
parser.add_argument('--wn1',type=int,dest='wn1',help='截止频率1')
parser.add_argument('--wn2',type=int,dest='wn2',help='截止频率2')
parser.add_argument('--f_type',type=str,dest='f_type',help='滤波方式选择')
args=parser.parse_args()
main(args.id,args.signal_file_path,args.start_point,args.end_point,args.rp,
args.rs,args.fs,args.n,args.wn1,args.wn2,args.f_type)