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 宽带信号


同一个信号在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窄带信号频率大点,模拟更多可能的情况。
LFM | SFM | |
窄 | 4 | 16 |
中 | 8 | 8 |
宽 | 16 | 4 |
......大带宽下频率太快的话,一次扫频、一个周期采样根本不够,USRP频率切换本身构成了采样行为。