python - python中frq分析的新手,Scipy rfft
问题描述
我最近从 MATLAB 迁移到 python,因为 pyhton 更适合当前项目。由于我的论文是关于生物力学的,我发现自己处于深水中,因为我在 python 或这种类型的分析方面都没有经验。
我的功能如下所示:
def PolarFFT(data):
L = len(data)
R = np.zeros((data.shape))
R = sp.fftpack.rfft(data)
R = np.abs(R)
R = R[1:-1]
n = R.size
ts = 1/fs
f = sp.fftpack.rfftfreq(L,ts)
f = f[1:-1]
outputfft = R
outputfft[:,-1] = f
return outputfft
accWindfrq = PolarFFT(accWind)
这是我迄今为止最好的镜头,但它没有按预期工作。它似乎只是以另一种比例输出原始数据。这个想法是有一个输出,它是一个 Lx4 矩阵,其中 col 1=x、2=y、3=z 和 4=频率箱。
有没有人可以帮我解决这个问题?或者指出我正确的方向?也许我上面所做的甚至是不可能的?非常感谢任何评论和帮助。
此致
解决方案
我假设这accWind
是一个 Lx3 数组。
R = np.zeros((data.shape))
不做任何事情,因为它将被替换。下一行指向R
新数据,而不是将其复制到R
.
R = sp.fftpack.rfft(data)
应该是R = sp.fftpack.rfft(data, axis=0)
。默认情况下,它在最后一个轴上进行傅立叶变换。
outputfft[:,-1] = f
不连接数组。它会覆盖最后一列。您可以使用以下之一:
outputfft = np.concatenate((R, f), axis=1)
# or
outputfft = np.hstack((R, f))
# or
outputfft = np.empty((f.size, 4), dtype='c')
outputfft[:, :-1] = R
outputfft[:, -1] = f
我只包括最后一个,因为我认为这就是你想要的。
推荐阅读
- java - 将多个 Apache Beam 管道打包到一个 jar 文件中
- python - python中的http代理,我应该何时以及如何关闭连接?
- jenkins - Jenkins AD 后备用户
- excel - 如果自动筛选标识符下的单元格为空白,如何连接 B 列的内容?
- excel - 使用工作日函数的计数公式
- javascript - 悬停时的语义 ui 下拉菜单
- c# - Visual Studio SDK 确定单个项目是否是最新的
- anaconda - 无法在 Anaconda 上获取 pyperclip(Python 3.7)
- hive - hive 不能显示特殊字符
- android - 显示进度对话框时,Android 应用程序因 DeadObjectException 崩溃