当前位置: 首页 > news >正文

USRP采集信号转换为时频图数据集

一、.txt文件转换为png文件 

%zhouzhichao
%25年7月21日
%txt信号数据转换为pngclear
clc
close allsamp_rate = 250e3;
% 定义文件路径
file_path = 'D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\USRP\fs_250.0kHz_duration_10\wide\fc_1.5GHz.txt';% 打开文件
fid = fopen(file_path, 'r');% 读取文件内容
% 每个复数数据由两个 float32 组成 (4字节),所以我们需要按 float32 类型读取
% 假设文件中的数据是复数,读取时按照复数数据格式(每对数据为实部和虚部)
data = fread(fid, 'float32');% 关闭文件
fclose(fid);% 将读取的单精度数据分成实部和虚部
real_part = data(1:2:end);  % 取奇数位置的数据作为实部
imag_part = data(2:2:end);  % 取偶数位置的数据作为虚部% 合并为复数数据
complex_data = real_part + 1i * imag_part;%%
%生成时频图:
% [tfr,t,f] = tfrctfd2(complex_data);
% imagesc(abs(tfr))
% level = max(max(abs(tfr(:, 200:800))));
% caxis([0, level]);
% pause(0.05)
% saveas(gcf,[base ,'\',num2str(snr),'\',num2str(num+start_n),'.jpg'])%%
%短时傅里叶变换
window = hamming(256);  % 选择窗口大小
noverlap = 128;         % 设置窗口重叠
nfft = 512;             % 设置FFT点数
[S,F,T] = spectrogram(complex_data, window, noverlap, nfft, samp_rate, 'yaxis');
F = F/1e3;
F = F-125;
imagesc(T, F, abs(S));  % 绘制时频图
axis xy;
title('STFT');
xlabel('Time (s)');
ylabel('Frequency (kHz)');set(gca, 'FontName', 'Times New Roman');

1.1 宽带信号 

MATLAB中展示的USRP收发信号 abs(S)
MATLAB中展示的USRP收发信号 log(abs(S))

同一个信号在USRP QT GUI显示是这样的:

1.2 中带信号

1.3 窄带信号

 

三种信号放一起比较:

二、.txt文件转换为多个png的数据集 

程序:

%zhouzhichao
%25年7月21日
%txt信号数据一1s一个信号拆分为多个信号clear
clc
close allsamp_rate = 250e3;  % 采样率 250 kHz
sig_size = "narrow"; 
signal_duration = 1;  % 每个信号的时长 1秒% 定义文件路径
file_path = 'D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\USRP\fs_250.0kHz_duration_10\'+sig_size+'\fc_1.5GHz.txt';% 打开文件
fid = fopen(file_path, 'r');% 读取文件内容
% 每个复数数据由两个 float32 组成 (4字节),所以我们需要按 float32 类型读取
data = fread(fid, 'float32');% 关闭文件
fclose(fid);% 将读取的单精度数据分成实部和虚部
real_part = data(1:2:end);  % 取奇数位置的数据作为实部
imag_part = data(2:2:end);  % 取偶数位置的数据作为虚部% 合并为复数数据
complex_data = real_part + 1i * imag_part;% 计算每秒的采样点数
samples_per_signal = samp_rate * signal_duration;% 计算总的信号数量(去除最后一段不足1秒的部分)
num_signals = floor(length(complex_data) / samples_per_signal);% 拆分为多个信号
signals = reshape(complex_data(1:num_signals * samples_per_signal), samples_per_signal, num_signals);% 生成时频图
% 短时傅里叶变换参数
window = hamming(256);  % 选择窗口大小
noverlap = 128;         % 设置窗口重叠
nfft = 512;             % 设置FFT点数% 创建保存路径
output_path = 'D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\USRP\fs_250.0kHz_duration_10_img\'+sig_size;% 对每个信号进行时频图绘制并保存
for i = 1:num_signals[S, F, T] = spectrogram(signals(:, i), window, noverlap, nfft, samp_rate, 'yaxis');F = F / 1e3;  % 将频率单位从Hz转为kHzF = F - 125;  % 频率偏移调整% 绘制时频图imagesc(T, F, log(abs(S)));  axis off;% 保存时频图为图片save_path = output_path + '\' + num2str(i)+ '.jpg';exportgraphics(gcf, save_path, 'BackgroundColor', 'none', 'ContentType', 'image');
end
数据集效果

 从1s观测时长信号的时频图来看,LFM、SFM的频率得加倍。本身雷达信号一个脉冲是以ms为单位的时长出现的,现在1s都完成不了一个周期,肯定不行,不够接近实际情况。而Frank信号时长也太长了,得缩短。

这批信号LFM、SFM的频率是0.5Hz,Frank的repeat_time为256。

那LFM, SFM频率调整为4到16,Frank的repeat_time为128到32。

LFM窄带信号频率小点,SFM窄带信号频率大点,模拟更多可能的情况。

LFMSFM
416
88
164

......大带宽下频率太快的话,一次扫频、一个周期采样根本不够,USRP频率切换本身构成了采样行为。

http://www.xdnf.cn/news/1163791.html

相关文章:

  • 理解向量及其运算-AI云计算数值分析和代码验证
  • Mac上安装Homebrew的详细步骤
  • CCLink IE转ModbusTCP网关与三菱PLC通讯无纸记录器
  • selenium爬取图书信息
  • 旋转目标检测(Rotated Object Detection)技术概述
  • Selenium 处理表单、弹窗与文件上传:从基础到实战
  • ACE 插入元件
  • cs336 Lecture2
  • 使用Langchain调用模型上下文协议 (MCP)服务
  • AI革命带来的便利
  • Go语言进阶书籍:Go语言高级编程(第2版)
  • 14.7 Alpaca格式深度解析:3倍指令准确率提升的LLM微调秘诀
  • Jenkins 不同节点间文件传递:跨 Job 与 同 Job 的实现方法
  • Linux | C Shell 与 Bash 的差异 / 环境变量配置问题解析
  • 了解 ReAct 框架:语言模型中推理与行动的协同
  • vscode 使用说明二
  • vscode创建vue项目报错
  • 5.6 framebuffer驱动
  • 人工智能之数学基础:事件间的关系
  • MySQL 核心知识点梳理(3)
  • Qualcomm Linux 蓝牙指南学习--验证 Fluoride 协议栈的功能(2)
  • Java学习----NIO模型
  • 爬虫实战指南:从定位数据到解析请求的全流程解析
  • PyTorch 实现 CIFAR-10 图像分类:从数据预处理到模型训练与评估
  • 【PHP安全】免费解密支持:zend52、zend53、zend54好工具
  • C# 结构体
  • AI Agent与MCP协议构建标准技术报告(2025Q3)
  • 【科研绘图系列】R语言绘制棒棒图和哑铃图
  • PyQt5—QInputDialog 学习笔记
  • MySQL 8.0 OCP 1Z0-908 题目解析(31)