最后,我的代码得到了改进。我用scipy.signal.filtfilt替换了fftfilt(两次应用)(基本相同)。所以我的代码转换为python将是:

import numpy as np

import scipy.signal as sg

AveragingLengthAmp = 10

AveragingLengthPhase = 10

PhaseFixLength = 60

averaging_length = channel_sampling_freq1*PhaseFixLength

def fix_phasedata180(data_phase, averaging_length):

data_phase = np.reshape(data_phase,len(data_phase))

x = np.exp(1j*data_phase*2./180.*np.pi)

N = float(averaging_length)

b, a = sg.butter(10, 1./np.sqrt(N))

y = sg.filtfilt(b, a, x)

output_phase = data_phase - np.array(map(round,((data_phase/180*np.pi-np.unwrap(np.angle(y))/2)%(2*np.pi))*180/np.pi/180))*180

temp = output_phase[0]%90

output_phase = output_phase-output_phase[0]+temp

s = output_phase[output_phase >= 180]

for s in range(len(output_phase)):

output_phase[s] = output_phase[s]-360

return output_phase

out1 = fix_phasedata180(data_phase, averaging_length)

def fix_phasedata90(data_phase, averaging_length):

data_phase = np.reshape(data_phase,len(data_phase))

x = np.exp(1j*data_phase*4./180.*np.pi)

N = float(averaging_length)

b, a = sg.butter(10, 1./np.sqrt(N))

y = sg.filtfilt(b, a, x)

output_phase = data_phase - np.array(map(round,((data_phase/180*np.pi-np.unwrap(np.angle(y))/4)%(2*np.pi))*180/np.pi/90))*90

temp = output_phase[0]%90

output_phase = output_phase-output_phase[0]+temp

output_phase = output_phase%360

s = output_phase[output_phase >= 180]

for s in range(len(output_phase)):

output_phase[s] = output_phase[s]-360

return output_phase

offset = 0

data_phase_unwrapped = np.zeros(len(out2))

data_phase_unwrapped[0] = out2[0]

for jj in range(1,len(out2)):

if out2[jj]-out2[jj-1] > 180:

offset = offset + 360

elif out2[jj]-out2[jj-1] < -180:

offset = offset - 360

data_phase_unwrapped[jj] = out2[jj] - offset这里fix_phasedata180修正了180度的移位,类似于fix_phasedata90。 channel_sampling_freq1是1 /秒。

结果是:

这大多是正确的。只有我有一些问题需要了解scipy.signal.butter和scipy.signal.filtfilt。如你所见,我选择:

b, a = sg.butter(10, 1./np.sqrt(N))这里滤波器(N)的阶数为10,临界频率(Wn)为1 / sqrt(60)。我的问题是,我如何选择过滤器的适当顺序?我尝试了N = 1,直到N = 21,大于21,结果data_phase_unwrapped都是NAN。我也尝试过,在filtfilt中为padlen提供值,但我并不理解。

matlab elif,MATLAB与fftfilt相当于Python相关推荐

  1. matlab用socket线程发送数据,使用Python Twisted和Autobahn从Matlab通过WebSocket发送JSON数据...

    我正在尝试创建一个从Matlab到WebSocket流JSON帧的连接.我用下面的代码测试了我的python安装和twisted.在 工作实例 Matlab代码 示例驱动程序代码,它使用JSONlab ...

  2. python与matlab哪个更容易学-详解python和matlab的优势与区别

    Python是一种面向对象的解释型计算机程序设计语言.Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 .Pytho ...

  3. python读取matlab数据_详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...

  4. matlab interp1d 中的spline方法对应python

    matlab interp1d 中的spline方法对应python from scipy.interpolate import CubicSpline,CubicHermiteSpline,inte ...

  5. matlab netcdf,Matlab读取Netcdf文件

    NetCDF(网络通用数据格式)文件后缀为.nc,文件中的数据结构包含维(dimensions).变量(variables)和属性(attributes)三种描述类型,每种类型都会被分配一个名字和一个 ...

  6. matlab vision hdl,MATLAB下载,MATLAB购买,MATLAB试用,MATLAB介绍,MATLAB评价

    主要功能: 用于科学和工程计算的高级语言 桌面环境变得适合于迭代式的探查.设计及问题求解 用于数据可视化的图像系统以及用于创建自定义绘图的工具 用于曲线拟合.数据分类.信号分析和许多其他领域特定任务的 ...

  7. 视频教程-MATLAB复变函数-Matlab

    MATLAB复变函数 图书作者,代码从业者,N多年 苏金明 ¥39.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠,最少立减5元 ↓↓↓ 订阅 ...

  8. java开源仿真平台除了matlab,除了Matlab,数学物理建模仿真还有更好的选择

    国内工业界搞研发时,使用的通用数学物理建模仿真软件除了Matlab还是Matlab,似乎Matlab已经成为了一种行业标准,找不到比它更牛的了.然而果真如此吗?只能说,Matlab满足绝大多数行业研发 ...

  9. c++引用matlab类,matlab调用C++函数浅谈(一)

    由于在下才疏学浅,在网上看各高手指南时亦觉云里雾里,遂决定一切说明从最基础说起,一是方便自己(记性奇差),二是方便似我的小白.以下部分是我从各网站论坛等摘抄.重组.改写过的,以求更加详实明朗,由于参考 ...

最新文章

  1. [Swift]LeetCode218. 天际线问题 | The Skyline Problem
  2. 一文看尽腾讯WE大会:从治愈白血病到地球肿块,再到类脑芯片,烧脑探索“小宇宙”...
  3. Linux上使用shell脚本查看内存情况(超实用)
  4. python 城市地图_python – 使用Basemap获取城市地图的最佳方式?
  5. hibernate与jpa_将JPA Hibernate与OptaPlanner集成
  6. android ViewPager 图片浏览和保存图片
  7. Java中Javadoc的{@link}与@see的简单区别
  8. 【java】关于Map的排序性的一次使用,有序的Map
  9. java迷宫类编程题_第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)...
  10. 不使用网线就无法将两台计算机连接成网络,不通过路由器将两台计算机连接到网络的方法不止一种-如何将两台计算机连接到局域网...
  11. 【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)
  12. stm32 整数加法循环时间_剑指 Offer 65. 不用加减乘除做加法 leetcode 剑指offer系列...
  13. MATLAB图像去雾处理
  14. android app 开源项目,20+个很棒的Android开源项目
  15. 如何有效回复审稿人的意见
  16. 盘点PS使用小技巧。
  17. 形象标识 新松机器人_走进新松机器人公司 看新松机器人三大优势
  18. 《Armv8/armv9架构入门指南》-【第四章】- ARMv8 寄存器
  19. Unity3d C#通过使用大华SDK控制大华摄像头旋转、变焦等云台操作和预置点等控制操作(含源码)
  20. 图片宽度尺寸输出为500px的PX

热门文章

  1. Python使用集合运算检测密码字符串的安全强度
  2. Python课程期末考试编程题自动批卷原理与实现模板
  3. Python标准库base64用法简介
  4. fastdfs文件上传 read timeout_一文看懂centos7系统部署FastDFS 分布式文件系统
  5. c语言从文件查找字符串,C语言文件中字符串的查找与替换?
  6. maven项目包导不进去_IntelliJ Idea下Maven插件使用技巧
  7. 力扣559. N 叉树的最大深度(JavaScript)
  8. openresty nginx php,diy 你的nginx-OpenResty
  9. C++之顺序性容器vector、list、deque的五种定义方式
  10. netty半包粘包 处理_老王:Netty到底是个什么鬼?有没有简单的理解方式?