3、Python信号处理环境搭建:NumPy、SciPy、Matplotlib安装与配置、Jupyter Notebook使用
说实话,做雷达信号处理这么多年,我见过太多人一上来就啃算法,结果连个波形都画不出来。为啥?环境没搭好。你想想看,工具都不趁手,怎么干活?
这一章,咱们就把吃饭的家伙事儿备齐。别嫌基础,我当年刚入行时,光装个库就折腾了一下午——后来发现是Python版本没对上。嗯,这种坑,咱们今天一并填上。
3.1 为什么是这三个库?
做蝙蝠仿生雷达,说白了就是跟数组、数学公式和图形打交道。NumPy管数组,SciPy管算法,Matplotlib管可视化。这三兄弟缺一不可。
- NumPy:所有数据的基础容器。雷达回波信号本质就是个一维数组,没有NumPy你寸步难行。
- SciPy:信号处理的工具箱。滤波、傅里叶变换、小波分析,全在里头。我习惯叫它「瑞士军刀」。
- Matplotlib:画图用的。你总得看看波形长什么样吧?
核心逻辑:NumPy装数据 → SciPy做处理 → Matplotlib看结果。一条流水线,清清楚楚。
3.2 安装前的准备工作
我个人建议,别直接往系统Python里装库。为啥?项目一多,版本冲突能让你崩溃。我曾经同时维护三个项目,一个要NumPy 1.19,一个要1.24,结果全乱套了。
所以,先装个虚拟环境管理工具。推荐用Anaconda,省心。
3.2.1 检查Python版本
打开终端或命令提示符,敲下面这行:
python --version
输出应该是 Python 3.8 以上。低于3.7的,建议升级。我遇到过用Python 2.7跑SciPy的,那叫一个痛苦——好多新函数都不支持。
3.2.2 创建虚拟环境(推荐)
conda create -n bat_radar python=3.9
conda activate bat_radar
环境名叫 bat_radar,你换成自己喜欢的也行。激活后,终端前面会出现 (bat_radar) 字样,说明环境生效了。
小技巧:每次打开新终端,记得先 conda activate bat_radar。我习惯在项目根目录放个 .env 文件提醒自己。
3.3 安装三大库
3.3.1 使用pip安装
最直接的方式:
pip install numpy scipy matplotlib
等进度条跑完就行。如果网速慢,可以加个国内镜像:
pip install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
3.3.2 使用conda安装(推荐)
如果你用的Anaconda,我更推荐用conda装:
conda install numpy scipy matplotlib
conda会自动处理依赖关系,不容易出幺蛾子。我在项目里遇到过pip装SciPy报错,换成conda一次过。
3.3.3 验证安装
装完别急着走,先验证一下。打开Python交互环境:
python
>>> import numpy as np
>>> import scipy
>>> import matplotlib
>>> print(np.__version__)
>>> print(scipy.__version__)
>>> print(matplotlib.__version__)
没有报错,说明安装成功。如果报错,八成是环境没激活,或者Python版本不匹配。
注意:如果出现 ImportError: No module named 'numpy',先检查你当前在哪个环境里。我曾经在系统环境里装了半天,结果项目用的是虚拟环境——白忙活。
3.4 Jupyter Notebook:交互式开发的利器
做信号处理,我特别喜欢用Jupyter Notebook。为啥?你可以一段一段地跑代码,随时看中间结果。调试雷达波形时,这功能太香了。
3.4.1 安装Jupyter
conda install jupyter
或者:
pip install jupyter
3.4.2 启动Jupyter Notebook
在终端里敲:
jupyter notebook
浏览器会自动打开一个页面,地址一般是 http://localhost:8888。如果没自动打开,手动复制地址进去也行。
3.4.3 新建一个Notebook
点击右上角的「New」→「Python 3」,就创建了一个新的Notebook。你可以把它重命名为「chapter_03_env_setup」。
在第一个单元格里输入:
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
print("环境搭建成功!")
按 Shift+Enter 运行。看到输出,说明一切正常。
我的习惯:每个Notebook开头都放一个「环境检查」单元格,把常用的库全import一遍。这样后面写代码时,不会突然发现某个库没装。
3.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你一看就明白:
3.6 快速测试:画个正弦波
环境搭好了,咱们跑个简单的例子试试手。在Jupyter里新建一个单元格,输入:
import numpy as np
import matplotlib.pyplot as plt
# 生成时间轴
t = np.linspace(0, 1, 1000)
# 生成正弦波(模拟蝙蝠叫声的简化版)
f = 20000 # 20kHz,蝙蝠常用频率
y = np.sin(2 * np.pi * f * t)
# 画图
plt.figure(figsize=(10, 4))
plt.plot(t[:200], y[:200]) # 只画前200个点,看得清楚些
plt.title("20kHz 正弦波 - 环境测试")
plt.xlabel("时间 (秒)")
plt.ylabel("幅度")
plt.grid(True)
plt.show()
如果看到一条漂亮的正弦曲线,恭喜你——环境搭建成功!
避坑指南:如果图形显示不出来,检查一下Matplotlib的后端设置。在代码开头加一行:
import matplotlib
matplotlib.use('TkAgg')
我曾经在服务器上折腾了半天,最后发现是后端没配好。
3.7 本章小结
咱们今天干了三件事:
- 装了NumPy、SciPy、Matplotlib三个核心库
- 配好了Jupyter Notebook交互环境
- 跑通了第一个信号处理示例
工具齐了,后面就可以真刀真枪地干雷达信号处理了。记住:环境搭得好,调试少烦恼。我当年要是有人告诉我这些,能少走多少弯路啊。
一句话总结:NumPy装数据,SciPy做处理,Matplotlib看结果,Jupyter串起来。这套组合拳,够你用整个课程。
公众号:蓝海资料掘金营,微信deep3321