sudo apt-get install rx-tools soapysdr-module-uhd
sudo apt install git cmake build-essential libsoapysdr-dev
手动编译安装 rx-tools Ubuntu似乎在源里面有
git clone https://github.com/rxseger/rx_tools.git
cd rx_tools
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig
rx_power -d driver=uhd -f 1805M:1880M:100k -g 40 -i 10 -e 10s output.csv
数据图形化
sudo apt install python3-matplotlib
nano plot_spectrum.py
然后把下面python代码填进去
import csv
import matplotlib.pyplot as plt
from collections import defaultdict
# 用于存储每个频点的所有信号强度记录
data = defaultdict(list)
print("正在读取 output.csv ...")
with open('output.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
if len(row) < 7:
continue
# 解析 rx_power 的 CSV 格式
hz_low = float(row[2])
hz_step = float(row[4])
# 提取所有的 dBm 值
dbms = [float(x) for x in row[6:] if x.strip()]
for i, dbm in enumerate(dbms):
freq_mhz = (hz_low + i * hz_step) / 1e6 # 转换为 MHz
data[freq_mhz].append(dbm)
if not data:
print("错误:CSV 文件中没有找到有效数据!")
exit()
# 计算每个频点的平均信号强度
print("正在计算平均信号强度并绘图 ...")
freqs = sorted(data.keys())
avg_powers = [sum(data[f]) / len(data[f]) for f in freqs]
# 开始画图
plt.figure(figsize=(12, 6))
plt.plot(freqs, avg_powers, color='blue', linewidth=1)
plt.fill_between(freqs, avg_powers, min(avg_powers)-5, color='blue', alpha=0.3)
plt.title('Spectrum Scan Result (USRP B210)')
plt.xlabel('Frequency (MHz)')
plt.ylabel('Average Power (dBm)')
plt.grid(True, linestyle='--', alpha=0.7)
plt.tight_layout()
# 保存为图片
plt.savefig('spectrum.png', dpi=150)
print("✅ 成功!图表已保存为 spectrum.png")
运行即可生成
python3 plot_spectrum.py版权属于:Kiritake Kumi (Niconeiko) ,本文所引用的第三方材料版权归属为:第三方材料的所有者
本文链接:https://www.mxpkx.com/index.php/archives/327/
除特殊标注以及**影像内容**外,均使用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议 ,影像内容请务必联系确认是否可以转载使用