Python 低通滤波器
2015-09-08 12:58
537 查看
Python低通滤波器
读取ExcelProc目录下的out.txt文件中的波形数据,然后绘制出原始数据波形,最后再通过低通滤波器进行一次滤波
以下是改进型
读取ExcelProc目录下的out.txt文件中的波形数据,然后绘制出原始数据波形,最后再通过低通滤波器进行一次滤波
# -*- coding: utf-8 -*- from scipy import signal import numpy as np import matplotlib.pyplot as pl import matplotlib import math N = 0#500 fs = 5 n = []#[2*math.pi*fs*t/N for t in range(N)] n1 = [2*math.pi*fs*t/N for t in range(N)] fileObj = open("ExcelProc\out.txt",'r') for line in fileObj.readlines(): #依次读取每行 FuelVol = line#.split() #根据空格提取每个内容 FuelVol = int(FuelVol) n.append(FuelVol)<span style="white-space:pre"> </span>#将波形数据值依次添加到序列n中 N += 1 while N%12 != 0: n.append(int(0)) N += 1 print("N is deal ",N) axis_x = np.linspace(0,1,num=N) #设置字体文件,否则不能显示中文 #myfont = matplotlib.font_manager.FontProperties(fname='c:\\windows\\fonts\\fzshjw_0.ttf') #频率为5Hz的正弦信号 #x = [math.sin(i) for i in n] x = n pl.subplot(221) pl.plot(axis_x,x) pl.title(u'5Hz Sin') pl.axis('tight') b,a = signal.butter(3,0.15,'low') sf = signal.filtfilt(b,a,x) pl.subplot(222) pl.plot(axis_x,sf) pl.title(u'Low Pass') pl.axis('tight') fileout = open("Out.txt","w") fileout.write("const unsigned int datas[]={") line = 0 for i in sf: i = int(i) if(line%36 == 0): fileout.write("\n") fileout.write(str(i)+",") line += 1 fileout.write("};") fileout.close() pl.show()
以下是改进型
# -*- coding: utf-8 -*- from scipy import signal import numpy as np import matplotlib.pyplot as pl import matplotlib import math N = 0#500 fs = 5 n = []#[2*math.pi*fs*t/N for t in range(N)] n1 = [2*math.pi*fs*t/N for t in range(N)] fileObj = open("ExcelProc\out.txt",'r') for line in fileObj.readlines(): #依次读取每行 FuelVol = line#.split() #根据空格提取每个内容 FuelVol = int(FuelVol) n.append(FuelVol) N += 1 while N%12 != 0: n.append(int(0)) N += 1 print("N is deal ",N) axis_x = np.linspace(0,1,num=N) #设置字体文件,否则不能显示中文 #myfont = matplotlib.font_manager.FontProperties(fname='c:\\windows\\fonts\\fzshjw_0.ttf') #频率为5Hz的正弦信号 #x = [math.sin(i) for i in n] x = n pl.subplot(231) pl.plot(axis_x,x) pl.title(u'5Hz Sin') pl.axis('tight') x1 = [] length = (len(x)*5/7) x1 = x[-length:] pl.subplot(232) axis_x1 = np.linspace(0,1,num=len(x1)) pl.plot(axis_x1,x1) pl.title(u'ps') pl.axis('tight') x2 = x[:len(x)-length] pl.subplot(233) axis_x1 = np.linspace(0,1,num=len(x2)) pl.plot(axis_x1,x2) pl.title(u'pd') pl.axis('tight') b,a = signal.butter(3,0.13,'low') sf = signal.filtfilt(b,a,x1) pl.subplot(234) axis_x1 = np.linspace(0,1,num=len(x1)) pl.plot(axis_x1,sf) pl.title(u'Low Pass') pl.axis('tight') fileout = open("Out.txt","w") fileout.write("const unsigned int data[]@0xC000={") line = 0 outx = [] outx = x2 for i in sf: outx.append(i) pl.subplot(235) axis_x1 = np.linspace(0,1,num=len(outx)) pl.plot(axis_x1,outx) pl.title(u'Low Pass') pl.axis('tight') sampling_rate = 8000 fft_size = len(outx) xf = np.fft.rfft(outx)/fft_size freqs = np.linspace(0, sampling_rate/2, fft_size/2+1) xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100)) pl.subplot(236) pl.plot(freqs, xfp) pl.xlabel(u"Freq(Hz)") pl.subplots_adjust(hspace=0.4) for i in outx: i = int(i) if(line%36 == 0): fileout.write("\n") fileout.write(str(i)+",") line += 1 fileout.write("};") fileout.close() pl.show()
相关文章推荐
- Python 读取WAV音频文件 画频谱
- 再谈python的变量作用域
- python画完图后运行闪退解决办法
- 【python3.2机器学习环境搭建与配置】
- python对文件及文件夹的操作
- 非root用户安装Python 三方模块
- 简单 python爬虫 <2>
- python常用函数大总结
- python常用常用函数
- Python 主要模块和常用方法简览
- python 借助opencv实现Gabor滤波特征提取
- 零基础学python-12.4 while、for与range联合使用
- 零基础学python-12.4 while、for与range联合使用
- python os.path模块
- Python + uwcgi问题的解决
- 简单 python爬虫 <1>
- 妈妈再也不担心我的编码问题了。中文编码融汇贯通,windows,django,python,java,html 【转】
- Python支持的正则表达式元字符和语法
- Python多线程
- python程序中的字符与文件中的字符