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

多信号实采数据加噪版本

一、加噪多信号实采数据

多信号实采数据产生:

多雷达信号硬件模拟】 3台USRP+1台VSG信号发生器模拟多雷达信号,1台USRP产生高斯噪声模拟更多信道环境,1台USRP采集信号

加噪程序:
 

%zhouzhichao
%25年7月28日
%生成加噪的高斯测试数据集clear
clc
close allsamp_rate = 250e3;  % 采样率 250 kHz
% snr = 6;
for snr = [4,2,0,-2,-4]for sig_size = ["narrow","middle","wide"]% sig_size = "narrow";signal_duration = 10;  % 每个信号的时长 1秒fre_list = ["fc_1.5GHz","fc_2.0GHz","fc_2.5GHz","fc_3.0GHz","fc_3.5GHz","fc_4.0GHz","fc_4.5GHz","fc_5.0GHz"];for fre = fre_list% 定义文件路径%     file_path = 'D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\USRP\fs_250.0kHz_duration_100s\'+sig_size+'\fc_1.5GHz.txt';file_path = 'D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\USRP\fs_250.0kHz_duration_100s\'+sig_size+'\'+fre+'.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;% 计算信号的功率signal_power = mean(abs(complex_data).^2);% 计算噪声功率noise_power = signal_power / (10^(snr / 10));% 生成高斯噪声noise = sqrt(noise_power / 2) * (randn(size(complex_data)) + 1i * randn(size(complex_data)));% 将噪声添加到信号中noisy_complex_data = complex_data + noise;% 计算每秒的采样点数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_10s_img\real_multisignals_dataset\Gauss\"+num2str(snr);% 对每个信号进行时频图绘制并保存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 + '\'+sig_size+ '_' + fre +'_'+ num2str(i)+ '.jpg';exportgraphics(gcf, save_path, 'BackgroundColor', 'none', 'ContentType', 'image');endendend
end

原始采集:

信噪比设为6dB:

信噪比设为0dB:

二、多信号实采数据展示

展示程序:

clc
clear
close all% 打开文件
% fid = fopen('real_data_show.txt', 'rb'); % 'rb'表示以二进制读取模式打开文件
fid = fopen('D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\USRP\fs_250.0kHz_duration_100s\wide\fc_2.5GHz.txt', 'rb'); % 'rb'表示以二进制读取模式打开文件% 读取数据
raw = fread(fid, Inf, 'float32', 0, 'l'); % 假设数据是16位整数,'b'表示小端% 关闭文件
fclose(fid);data = raw(1:2:end) + 1i * raw(2:2:end);  % 复数数组samp_rate = 250e3;  % 采样率 250 kHz
signal_duration = 10;  % 每个信号的时长 1秒
samples_per_signal = samp_rate * signal_duration;
num_signals = floor(length(data) / samples_per_signal);
signals = reshape(data(1:num_signals * samples_per_signal), samples_per_signal, num_signals);
data = signals(:,5);fs = 1e6;
N = length(data);
tall = N/fs;
t = linspace(0,tall,N);% 时频分析(使用短时傅里叶变换 STFT)
window = 1024;          % 窗口大小
noverlap = 512;         % 重叠部分
nfft = 4096;            % FFT 点数% 绘制时频图
figure;
[S,F,T] = spectrogram(double(data), window, noverlap, nfft, samp_rate, 'yaxis');% spectrogram(double(data), window, noverlap, nfft, fs, 'yaxis');% log_data = log(abs(double(data)));
% log_data(~isfinite(log_data)) = 0;  % 将NaN或Inf替换为0
% spectrogram(log_data, window, noverlap, nfft, fs, 'yaxis');F = F/max(F)*samp_rate/1e3;
imagesc(T,F,10*log10(abs(S)))% imagesc(T,F,abs(S))% xlim([0,10])
% ylim([0,1000])
% ylim([0,200])% yticks_vals = yticks;
% yticks_vals = yticks_vals / max(yticks_vals)*samp_rate/1e3;
% yticks(yticks_vals);% colormap jet;  % 选择合适的颜色映射
caxis([-30 10]);  % 设置颜色轴范围xlabel('Time (s)');
set(gca, 'YDir', 'normal')
ylabel('Frequency (kHz)');
% colorbar;phi = (1 + sqrt(5)) / 2;
pbaspect([phi 1 1]);  % 设置为黄金分割比
% yticks(0:50:200);
set(gca, 'FontName', 'Times New Roman');  % 设置坐标轴字体
set(gca, 'FontSize', 14);

http://www.dtcms.com/a/303573.html

相关文章:

  • 详解 Electron 应用增量升级
  • 轻量级远程开发利器:Code Server与cpolar协同实现安全云端编码
  • 2. 编程语言-JAVA-Spring Security
  • 记录自己第n次面试(n>3)
  • JavaScript手录08-对象
  • 深入解析IPMI FRU规范:分区结构与字段标识详解
  • 10_opencv_分离颜色通道、多通道图像混合
  • Nuxt3 全栈作品【通用信息管理系统】修改密码
  • OpenLayers 综合案例-热力图
  • 在虚拟机ubuntu上修改framebuffer桌面不能显示图像
  • C++进阶—C++11
  • 5G 便携式多卡图传终端:移动作业的 “实时感知纽带”
  • 【unitrix】 6.19 Ord特质(ord.rs)
  • 【灰度实验】——图像预处理(OpenCV)
  • 2025年7月28日训练日志
  • 【三桥君】如何解决后端Agent和前端UI之间的交互问题?——解析AG-UI协议的神奇作用
  • 排水管网实时监测筑牢城市安全防线
  • 线程间-数据缓存机制(线程邮箱)
  • CDN架构全景图
  • STM32 usb HOST audio USB 音频设备 放音乐
  • springCloudAlibaba集成Dubbo
  • 【版本更新】火语言 0.9.94.0 更新
  • 虚拟面孔,真实革命
  • Product Hunt 每日热榜 | 2025-07-28
  • JAVA_EIGHTEEN_特殊文件
  • STM32——寄存器映射
  • LLaMA-Factory微调教程2:命令行sft微调
  • 【拓扑排序 缩点】P2272 [ZJOI2007] 最大半连通子图|省选-
  • 【跳跃游戏】
  • BUUCTF-MISC-[HBNIS2018]caesar1