毕业设计记录-matlab自动生成并标注时频图数据集

2022.1.8日的记录:

陆陆续续几天,玩中带做终于是写好了一个基本的雏形。以后想往里面添加东西就好添了。
首先是文件功能描述。
在这里插入图片描述

caogao:caogao,“草稿”,写程序调试代码的地方。
CreateSignal:生成各种调制的时域信号。
PSK2 : 2PSK调制。
FM : FM调制。
AM:AM调制。
DSB:DSB调制。
Signals_STFT:设置每张图含有的信号种类和数量,将生成的各种信号整合到同一个时间坐标上,选择添加噪声、突发信号,最后生成时频图。时间长度、信号起止时间设定范围内随机。我设置4种信号,每张图信号个数2-8随机如下:
在这里插入图片描述随机生成的图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Main:用来将生成的时频图处理成yolo格式的数据集。包括设置训练集图片数量、将图片分类成训练集和验证集(此处不生成测试集),同时保存含有每个信号的box信息(及信号种类,中心点坐标(x,y),box的宽度和长度)的label文本文件。
文件目录、图片和标签信息:在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Testbox:使用生成的文本文件中的信息来在原图中画框,目的是为了查看自动生成的标签文件信息是否正确。效果如下:
在这里插入图片描述
在这里插入图片描述

Detect:用来生成用于测试模型的图片。

训练好的模型效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Main

root_path = 'E:\datasets\2000';% 数据集根路径
train_label_path = [root_path, '\train\labels\'];% 训练集label文本保存路径
train_im_path = [root_path, '\train\images\'];% 训练集label文本保存路径
val_label_path = [root_path, '\valid\labels\'];% 验证集label文本保存路径
val_im_path = [root_path, '\valid\images\'];% 验证集label文本保存路径
im_all_num = 1000; %所有图片的数量
im_train_num = 0.8 * im_all_num;%训练集图片的数量
im_val_num = 0.2 * im_all_num;%验证集所有图片的数量

if signal_class == 2 % 2fsk区别对待
	x = (matrix(n, 2) + (matrix(n, 3) - matrix(n, 2))/2)/120000;  % 中心点横坐标及中心频率
	y = 0.5; % 中心点纵坐标及中心时刻位置
	w = (matrix(n, 3)-matrix(n, 2))/120000 + 14/875;   % 宽度及带宽 为了画出的框可以包含信号而增加像素点
	h = 1;  % 高度及信号时长
else
	x = matrix(n, 3)/120000;  % 中心点横坐标及中心频率
	y = random_time(n, 1); % 中心点纵坐标及中心时刻位置
	w = 2 * matrix(n, 2) / 120000 + 14/875;   % 宽度及带宽 为了画出的框可以包含信号而增加像素点
	h = random_time(n, 2);  % 高度及信号时长
end

Signals_STFT

    %% stft参数设置
    wlen = 1024;% 设置窗口长度
    window = hamming(wlen);% 设置海明窗的窗长
    hop = 1;% 每次平移的步长
    noverlap = wlen - hop; % 重叠长度
%     f = 0:117.1875:120000;% 设置频率刻度hz,出图很慢,不用
    nfft = 2^nextpow2(length(window)); % nfft点数
    fs = 240000;    % 采样频率 频率坐标轴为采样频率的一半
        %% 信号参数设置
    dt = 1/fs;    % 时间精度
    times_tart = 0; % 开始时间
    time_end = 1;   % 结束时间
    t = times_tart:dt:time_end - dt; % 设置时间坐标轴起止时间
    snr = randi([0, 20]); % 设置随机信噪比
    signals_matrix = []; % 用来整合信号类型和频率的矩阵 格式为 class f1 f2
    random_time = []; % 用来整合信号中心时刻和时长的矩阵 格式为 时长 中心时刻
    class = [0, 1, 4, 3]; % 设置信号种类(0开始同python)
                          % 0 AM 1 FM 2 DSB 3 2PSK 4 2FSK
    signals_num = randi([2, 8]); % 每张图信号的数量:28随机
    for i = 1:signals_num
        random_time(i, 2) = unifrnd(0.1, 0.5); % 信号时长0.1-0.5随机
        random_time(i, 1) = unifrnd(random_time(i, 2)/2,...
            1 - random_time(i, 2)/2); % 信号中心时刻在保证信号在图内的前提下在随机
    end

代码链接:https://download.csdn.net/download/gaohuayu66/75394127

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芃芃です

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值