Combined Signal Representations for Modulation Classification Using Deep Learning: Ambiguity Function, Constellation Diagram, and Eye Diagram
信号表示
Ambiguity Function(AF)
模糊函数描述了信号的两个维度(dimensions):延迟(delay)和多普勒(Doppler)。
clear;
clc;
snr = 15;
modulation = [8, 16, 32];
ml = dictionary(15, "test", 35, "train"); % 检查是否已正确定义
base_path = sprintf('C:\\data\\AF%d', snr); % 正确的路径格式
disp(base_path);
mkdir(sprintf('AF%d', snr));
cd(sprintf('AF%d', snr));
for operation = [15, 35]
for p = 1:length(modulation)
mod_dir = sprintf('%s/%d', ml(operation), modulation(p));
if ~exist(mod_dir, 'dir')
mkdir(mod_dir); % 如果目录不存在,则创建
end
end
end
% 滤波器和采样参数
sps = 1; % 每个符号的采样数(过采样因子)
fs = 20; % 采样率设置为20 Hz
prf = 1; % 脉冲重复频率设置为1 Hz
filtlen = 20; % 滤波器长度,单位:符号
rolloff = 1; % 滤波器滚降因子
rrcFilter = rcosdesign(rolloff, filtlen, sps); % 设计升余弦 FIR 脉冲整形滤波器
% 主模拟循环
for m = [15, 35]
for j = 1:length(modulation)
M = modulation(j);
k = log2(M); % 每个符号的比特数
numBits = 2 * k; % 对于 QAM,这个值调整为 2*k
for i = 1:m
rng shuffle; % 使用默认的随机数生成器
dataIn = randi([0 M-1], numBits, 1); % 生成随机数据
disp(i);
% 使用 QAM 进行调制
dataMod = qammod(dataIn, M); % 使用 qammod 进行 QAM 调制
% 滤波并加入噪声
txFiltSignal = upfirdn(dataMod, rrcFilter, sps, 1);
rxSignal = awgn(txFiltSignal, snr, 'measured');
% 计算模糊函数
x = rxSignal; % 正确使用 rxSignal
[afmag, delay, doppler] = ambgfun(x, fs, prf);<