一、前言
我记得我是最早将《MatLab对CSI的相位进行矫正》代码上传至网上的,后面陆续有人进行抄袭,不得已把一些细节和代码进行隐藏。今天整理之前Python代码的时候,发现一些不规范的问题,所以写了这篇博客。
二、使用Python对CSI相位矫正
这部分代码参考之前的文章,因为我两套代码都是类似的,只是分别用MATLAB和Python写了一遍而已。如果你对CSI相位不了解的话,建议将我往期的文章都看一遍。
如何使用MatLab对CSI的相位进行矫正_csi相位解卷绕_数产小黑娃的博客-CSDN博客
[final_phase,unwrap_phase] = phase_correction(raw_phase)
矫正之后的k与b取值(截取了部分数据)
k: -0.2813, b: -9.6485
k: -0.2973, b: -5.6541
k: -0.3149, b: -7.7716
k: -0.2844, b: -9.9642
k: -0.3001, b: -5.6084
k: -0.3186, b: -7.7602
k: -0.2872, b: -9.8381
k: -0.3049, b: -5.6557
k: -0.2736, b: -7.6461
k: -0.2906, b: -9.7018
k: -0.3094, b: -11.5847
k: -0.2774, b: -7.5641
k: -0.2956, b: -9.6131
k: -0.3136, b: -11.9447
三、CSI相位矫正可视化
plt.figure(figsize=(12, 6))
plt.subplot(131)
plt.plot(raw_phase.iloc[0, :])
plt.title('原始相位')
plt.xlabel('子载波')
plt.ylabel('相位')
plt.subplot(132)
plt.plot(Unwrapped_phase.iloc[0, :])
plt.title('解包缠相位')
plt.xlabel('子载波')
plt.ylabel('相位')
plt.subplot(133)
plt.plot(final_phase.iloc[0, :])
plt.title('最终相位')
plt.xlabel('子载波')
plt.ylabel('相位')
我们发现上面的图片画的很难看,首先图标都挤一块去了,其次刻度都朝外面。如何画的更好看呢?
1、为了让图标更加美观,我们只需要加一句代码即可,当然如果要加点的样式等等,可以根据自己的需求来弄!
plt.tight_layout()
2、如何让刻度朝内呢?也只需一行代码即可!
plt.tick_params(axis='both', which='both', direction='in')
3、如果要对x轴进行划分呢?
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['left'].set_position('zero')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.tick_params(axis='both', which='both', direction='in', pad=10,labelrotation=45)
4、最后的画图效果,怎么样?是不是好看多了。
博主的每篇博文都是用心去写的,喜欢的可以多多支持和收藏,创作不易,未经作者允许,请勿转载或者抄袭。因为抄袭风气盛行,故一些细节或者代码没有展示,敬请谅解,如有疑问,可以加入我们的室内定位大家庭!