使用python提取抖动正弦波的相位

信息处理 离散信号 信号分析 Python
2022-02-02 07:15:28

背景: 我做了一个实验,我多次旋转一个物体(三重对称)并记录物体的投影。我应该能够使用逆氡变换断层重建对象。

但是,首先,我需要知道每个步骤中物体的确切角度。不幸的是,我们的实验并不完全稳定,物体也没有以完全一致的步长旋转。该物体具有“三叶草”形状,如果我绘制投影的“不对称”(顶部-底部/(顶部+底部)),那么它应该看起来像一个正弦波,每 120 度有一个峰值相位(由于三重对称)。

无论如何,这是真正的问题:在下图中,我用蓝色绘制了图像的真正不对称性。在红色部分,我绘制了一个简单的正弦波,如果没有实验性抖动,不对称应该是什么。如果你用眼睛看蓝色数据,你可以清楚地看到它偏离模型的地方,你可以推断出波的实际相位应该是什么。但是,我不知道如何说服 python 根据每个数据点的实际不对称值为其分配一个相位。有任何想法吗??

在此处输入图像描述

这是用于制作简单绘图的数据和代码:

text = """0.58018836  0.54719772  0.35009603 -0.07093418 -0.38495609 -0.56433715
 -0.58238798 -0.58197763 -0.79733289 -0.91822821 -0.88177671 -0.71078292
 -0.1013863   0.53490235  0.50354981  0.05747148 -0.49258035 -0.86043242
 -0.73366264 -0.11736485  0.40830017  0.75403686  0.76892275  0.74578394
  0.67759482  0.58632213  0.38615145 -0.04784894 -0.58773909 -0.80827248
 -0.70176645 -0.3018048   0.33288852  0.75568507  0.52563443 -0.09271778
 -0.74360484 -0.93751009 -0.84840137 -0.62956237 -0.18022792  0.23716647
  0.58545184  0.70021713  0.61602417  0.39086982 -0.09830602 -0.73635755
 -0.83658372 -0.36582787  0.12293982  0.51728333  0.72395964  0.77727396
  0.71986029  0.43646683  0.0821097  -0.33721973 -0.75678586 -0.59755965
  0.08786262  0.59804408  0.76638545  0.4829408  -0.01587402 -0.42493757
 -0.63032865 -0.70086101 -0.71030878 -0.55375893 -0.16074062  0.42243708
  0.78208721  0.58585221  0.14783457 -0.32854651 -0.73844163 -0.74110153
 -0.28917785 -0.03469134 -0.03392741  0.10028943  0.5273808   0.8099916
  0.60887728 -0.0270428  -0.64313701 -0.8553194  -0.82824477 -0.60014313
 -0.2471473   0.2198018   0.56404379  0.71217775  0.81460569  0.66100642 """

import numpy as np
import matplotlib.pyplot as plt

asym = np.array(text.split())
plt.plot(asym)

step = 11.76
theta = np.linspace(0,np.shape(asym)[0]*step,np.shape(asym)[0])

plt.plot(np.sin(3*theta/180*np.pi),color='r')
plt.show()
0个回答
没有发现任何回复~