背景: 我做了一个实验,我多次旋转一个物体(三重对称)并记录物体的投影。我应该能够使用逆氡变换断层重建对象。
但是,首先,我需要知道每个步骤中物体的确切角度。不幸的是,我们的实验并不完全稳定,物体也没有以完全一致的步长旋转。该物体具有“三叶草”形状,如果我绘制投影的“不对称”(顶部-底部/(顶部+底部)),那么它应该看起来像一个正弦波,每 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()