毕业课题 | ISAC通感一体化平台数据处理matlab代码 信道估计 时频域特征提取 有监督机器学习检测分类

-----------------------------------目录-------------------------------------

读取接收机数据(GSR_Rx_tdms_read.m) -->

获取信道信息(用导频做信道估计HestiPhase.m) -->

时域频域特征提取,存入excel表格 (基础特征&基于相关论文的重要特征,timeFeatureExtraction.m; HstftFeatureExtraction.m) -->

从excel中读取数据,训练分类器(newInputGenerator.m) -->

训练机器学习分类器

----------------------------------代码----------------------------------------

读取数据代码 GSR_Rx_tdms_read.m

%%
%matlab版本,Matlab 2022b及以上
clc;clear;
%文件路径(从实验设备/接收机中获取的数据)
fileName = "C:\Users\Z\Desktop\data\0201\5liandun1.tdms";

%GSR默认的通道组名称为USRP Rx,若打开其他TDMS文件,需要确认通道组名称是否正确
ChannelGroup="USRP Rx";

%每次读取的数据长度
readSize = 60000000000;

%读取通道组中的ChannelGroup通道
ds = tdmsDatastore(fileName, ReadSize=readSize, SelectedChannelGroup=ChannelGroup);

%从文件头开始读取通道组中所有通道的数据,每次读取点数为readsize
while(hasdata(ds))
    [IQ_cell,info] = read(ds);  
    info.Offset %
end

IQ=table2array(IQ_cell{1});
chanenel_num = length(IQ(1,:));
sample_num = length(IQ(:,1));
% IQ数据为uint32,高16bit为I路,低16位为Q,拆分后数据类型为int16
channel_data = zeros(sample_num,chanenel_num);
for i = 1:chanenel_num
    Q = typecast((bitshift(IQ(:,i),-16)),'int16');
    I = typecast(bitand(IQ(:,i),uint32(65535)),'int16');
    
    %去偶数行的0和数据对齐,可能不用去?不用就注释掉
    I = I(1:2:end);
    Q = Q(1:2:end);

    channel_data(:,i) = complex(I, Q);    
end

%plot(Q)

信道估计代码 HestiPhase.m


% -------用导频H做phase
% --------------OFDM parameters-----------
Carriers = 3276;
Nfft = 4096; % 进行了fft操作的点数,满足2^n
Np = 4096;
%% --------------------------------获取导频的位置参数loc--------------------------
% 16 - QAM - Modulation Scheme 
Es = 1; 
M = 64;
A = sqrt(3/2/(M-1)*Es);% Signal energy and QAM normalization factor
Nps = 4; % Pilot Spacing
msgint = randi([2 5],1,Carriers); % 模拟生成发送信号
dat_ser = A*qammod(msgint,M); % 信号调制
% serial to parllel conversion
dat_par = dat_ser.'; % 将序列转换为并行形式,存储在dat_par中。
% Pilot Insertion - Comb Type Arrangement
j = 1;
k = 1; 
loc = [];
for i = 1:Nfft
    if or((i<=round(Carriers/2)),(i> Nfft-round(Carriers/2)))
        if mod(i,Nps) == 1 % 余数为1
            X(i) = k;    % 插入导频
            loc = [loc i];   % 记录导频位置
            k=k+1;
        end
    end
end


%% --------------------------------获取发送时真实的导频----------------------------
XP_data = xlsread('C:\Users\Z\Desktop\ISAC\code\phwyh\yh\Tx_Pilot_Xp.xlsx');
real_pilot = XP_data(1:2048);
imag_pilot = XP_data(2049:end);
Xp = complex(real_pilot,imag_pilot);

Nps = 4; % Pilot Spacing
Np = floor(Carriers/Nps); % 每个OFDM信号的导频载波个数


%% ---------发送信号做接收,用于验证导频
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值