第1章:Python环境搭建——Anaconda安装、虚拟环境配置、必备库安装
各位同学,咱们正式开始。
做航电系统雷达数据流处理,第一件事不是写代码,而是把环境搭好。我见过太多人上来就pip install,结果装了一堆乱七八糟的版本,最后项目跑不起来,排查半天发现是numpy和scipy版本不兼容。嗯,这种坑我踩过不止一次。
1.1 为什么选Anaconda?
说白了,Anaconda就是Python的「全家桶」。它自带科学计算最常用的库,还帮你管好了依赖关系。你想想看,雷达信号处理动不动就要numpy做矩阵运算、scipy做滤波、matplotlib画频谱图,一个个手动装多麻烦?
我个人习惯是:不管项目大小,一律用Anaconda。尤其是做航电系统这种对实时性有要求的场景,环境一致性太重要了。你在自己电脑上跑得好好的,部署到工控机上就报错,这种事我遇到过好几次。
核心优势:
- 自带150+科学计算库,省去手动安装的麻烦
- conda命令比pip更擅长处理二进制依赖(比如BLAS、LAPACK这些底层库)
- 虚拟环境隔离,不同项目互不干扰
1.2 Anaconda安装步骤
安装其实很简单,但有几个细节要注意。我直接说重点。
- 下载安装包:去官网(anaconda.com)下载对应操作系统的版本。Windows选64位,Linux选Linux版,macOS选macOS版。别下错了,我见过有人下32位版本,结果numpy跑起来慢得离谱。
- 安装过程:Windows用户注意,安装时勾选「Add Anaconda to my PATH environment variable」。虽然安装程序会提醒你不推荐,但相信我,不勾选的话后面每次用conda都要手动激活路径,烦得很。
- 验证安装:打开终端(Windows用cmd或PowerShell),输入
conda --version。如果看到版本号,说明装好了。
小技巧:安装完成后,建议先执行conda update conda更新一下conda本身。老版本conda的依赖解析算法比较慢,新版本快很多。
1.3 虚拟环境配置——这是重点
做航电系统项目,你可能会同时维护多个项目:一个做雷达信号仿真,一个做数据采集,还有一个做实时处理。每个项目依赖的库版本可能不一样。虚拟环境就是用来解决这个问题的。
我举个例子:项目A需要numpy 1.21,项目B需要numpy 1.26。如果没有虚拟环境,你只能二选一,或者忍受版本冲突。有了虚拟环境,每个项目都有自己的「小房间」,互不干扰。
创建虚拟环境
conda create -n radar_env python=3.9
这条命令创建了一个叫radar_env的环境,Python版本指定为3.9。为什么选3.9?因为目前numpy、scipy、matplotlib对3.9的支持最稳定。3.10以上有些库的二进制包还没完全适配,我踩过这个坑。
激活环境
conda activate radar_env
激活后,终端前面会出现(radar_env)字样,说明你现在就在这个环境里了。所有安装的库都会装到这个环境里,不会影响系统Python。
退出环境
conda deactivate
注意:每次打开新终端,都要重新激活环境。我曾经犯过一个低级错误:在base环境里装了一堆库,结果项目跑不起来,排查了半天才发现环境没激活。嗯,这种低级错误犯一次就够了。
1.4 必备库安装——numpy、scipy、matplotlib
这三个库是雷达信号处理的基石。咱们一个一个说。
1.4.1 numpy——矩阵运算的基石
雷达数据本质上就是多维数组。一个脉冲的回波数据,就是一个一维数组;多个脉冲组成一个二维矩阵(快时间×慢时间)。numpy就是用来处理这些数组的。
conda install numpy
或者指定版本:
conda install numpy=1.21.5
安装完成后,可以验证一下:
python -c "import numpy; print(numpy.__version__)"
个人经验:numpy的版本不要追新。我一般选次新版本,比如1.21.x或1.22.x。新版本有时会改一些底层API,导致scipy或matplotlib不兼容。稳定第一。
1.4.2 scipy——信号处理的瑞士军刀
scipy建立在numpy之上,提供了大量信号处理函数。雷达数据处理中常用的有:
scipy.signal:滤波器设计、卷积、相关运算scipy.fft:快速傅里叶变换(FFT)scipy.linalg:线性代数运算(矩阵求逆、特征值分解)
conda install scipy
安装后测试:
python -c "import scipy; print(scipy.__version__)"
1.4.3 matplotlib——数据可视化必备
做雷达信号处理,你肯定要画图:时域波形、频谱图、距离-多普勒图、方位角图……matplotlib就是干这个的。
conda install matplotlib
测试:
python -c "import matplotlib; print(matplotlib.__version__)"
1.5 一键安装所有依赖
如果你不想一个个装,可以创建一个environment.yml文件,把依赖写进去:
name: radar_env
channels:
- defaults
dependencies:
- python=3.9
- numpy=1.21.5
- scipy=1.7.3
- matplotlib=3.5.1
然后执行:
conda env create -f environment.yml
这样环境就一次性建好了。我习惯把每个项目的environment.yml放在代码仓库里,这样同事拉下来直接就能复现环境,省去很多沟通成本。
1.6 验证环境是否正常
最后,咱们写个小脚本验证一下:
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
# 生成一个简单的雷达回波模拟信号
fs = 10e6 # 采样率 10MHz
t = np.arange(0, 1e-3, 1/fs) # 1ms时长
f0 = 1e6 # 1MHz正弦波
echo = np.sin(2 * np.pi * f0 * t)
# 加一些噪声
noise = 0.1 * np.random.randn(len(t))
signal_with_noise = echo + noise
# 设计一个低通滤波器
b, a = signal.butter(4, 1.5e6, btype='low', fs=fs)
filtered = signal.filtfilt(b, a, signal_with_noise)
# 画图
plt.figure(figsize=(10, 6))
plt.plot(t * 1e6, signal_with_noise, label='含噪声信号', alpha=0.7)
plt.plot(t * 1e6, filtered, label='滤波后信号', linewidth=2)
plt.xlabel('时间 (μs)')
plt.ylabel('幅度')
plt.legend()
plt.grid(True)
plt.show()
如果这段代码能正常运行,说明你的环境已经准备好了。后面咱们就可以正式开始雷达信号处理的实战了。
小结一下:
- Anaconda帮你管理Python环境和依赖
- 虚拟环境隔离不同项目,避免版本冲突
- numpy、scipy、matplotlib是雷达信号处理的三大基石
- 用
environment.yml可以一键复现环境
好了,环境搭好了,下一章咱们开始真正接触雷达数据流。到时候我会带你们用Python处理真实的雷达回波数据,那才是真正有意思的部分。
课后练习:试着用conda创建两个不同的环境,一个装numpy 1.21,另一个装numpy 1.26。然后在两个环境里分别运行numpy.show_config(),看看输出有什么不同。这个小练习能帮你理解环境隔离的意义。
公众号:蓝海资料掘金营,微信deep3321