function helperGenerateRadarCommData(fs,wav,radartx,radarchan,commchan,rxpos_horiz_minmax,rxpos_vert_minmax,numData,direct,imageSize)
power_5G_LTE=[100 250 500]; % transmit power [W]
gain_5G_LTE=[0,4,8,12.2]; % transmit gain [dB]
maxNumScat=30;
SNRdBVec = {40,50,100};
for highestIndex=1:numData
%% Create airport waveform
% Create pulse
pulses = wav();
% (create pulse with random start)
numZeros=randi([1 round(wav.PulseWidth*wav.SampleRate*3/4)]);
pulses=[zeros(1,numZeros) pulses.'];
% Modify time vector for pulse with random start
% t=0:(1/fs):((length(pulses)-1)/fs); % seconds
%% Create 5G or LTE waveform
% General parameters
numSubFrames = 40; % [ms]
% frameDuration = numSubFrames*1e-3;
% LTE Parameters
RCVec = {'R.2','R.6','R.8','R.9'};
TrBlkOffVec = {1,2,3,4,5,6,7,8};
maxTimeShift = numSubFrames; % Time shift in milliseconds
% Generate LTE signal
RC = RCVec{randi([1 length(RCVec)])};
timeShift = rand()*maxTimeShift;
TrBlkOff = TrBlkOffVec{randi([1 length(TrBlkOffVec)])};
[txWaveLTE, waveinfoLTE] = helperGenerateRadarCommLTESignal(RC,timeShift,TrBlkOff,numSubFrames,fs);
x1_LTE=txWaveLTE;
% 5G Parameters
SCSVec = [15 30];
BandwidthVec = [10:5:30 40 50]; % [60 80 90 100]
maxTimeShift = numSubFrames; % Time shift in milliseconds
SSBPeriodVec = 20; %[5 10 20 40 80 160] 20 is most frequenctly found OTA
% Generate 5G Signal
scs = SCSVec(randi([1 length(SCSVec)])); %#ok<*PFBNS>
nrChBW = BandwidthVec(randi([1 length(BandwidthVec)]));
timeShift = rand()*maxTimeShift;
SSBPeriod = SSBPeriodVec(randi([1 length(SSBPeriodVec)]));
[txWave5G, waveinfo5G] = helperGenerateRadarCommNRSignal(scs,nrChBW,SSBPeriod,timeShift,numSubFrames,fs);
x1_5G=txWave5G;
%%%%%%%%%%%%%%%%%%%%%%%
%% Channel
% Channel parameters
% (scatter positions)
numScat=randi([1 maxNumScat]);
scatPos_x=rand([numScat 1])*2000-1000; %random('uniform',-1000,1000,[numScat 1]);
scatPos_y=rand([numScat 1])*2000-1000; %random('uniform',-1000,1000,[numScat 1]);
scatPos_z=rand([numScat 1])*1000; %random('uniform',0,1000,[numScat 1]);
scatPos=[scatPos_x'; scatPos_y'; scatPos_z';];
% (scatter coeff)
scatCoef_real=rand([numScat 1])*4-2; %random('uniform',-2,2,[numScat 1]);
scatCoef_imag=rand([numScat 1])*4-2; %random('uniform',-2,2,[numScat 1]);
scatCoef=scatCoef_real+1i*scatCoef_imag;
% Channel
% (Channel parameters)
% chan=phased.ScatteringMIMOChannel('TransmitArray',p,... 'ReceiveArray',p,...
% 'CarrierFrequency',fc,...
% 'SpecifyAtmosphere',true,...
% 'SampleRate',fs,...
% 'SimulateDirectPath',false,...
% 'MaximumDelaySource','Property',...
% 'MaximumDelay',1,...
% 'TransmitArrayMotionSource','Property',...
% 'TransmitArrayPosition',txpos,...
% 'TransmitArrayOrientationAxes',txaxes,...
% 'ReceiveArrayMotionSource','Property',...
% 'ScattererSpecificationSource','Property',...
% 'ScattererPosition',scatPos,...
% 'ScattererCoefficient',scatCoef');
% (Channel receiving antenna)
rec_xy=randn([2 1])*(rxpos_horiz_minmax(2)-rxpos_horiz_minmax(1))+rxpos_horiz_minmax(1);
rec_z=rand([1 1])*(rxpos_vert_minmax(2)-rxpos_vert_minmax(1))+rxpos_vert_minmax(1);
% random('uniform',rxpos_horiz_minmax(1),rxpos_horiz_minmax(2),[2 1]);
% rec_z=random('uniform',rxpos_vert_minmax(1),rxpos_vert_minmax(2),[1 1]);
% chan.ReceiveArray=phased.ConformalArray('Element',phased.IsotropicAntennaElement);
% chan.ReceiveArray.ElementPosition=[rec_xy;rec_z];
% Timing start
tic
% Transmit airport signal thru channel
y=radartx(pulses');
release(radarchan);
y=radarchan(y,[rec_xy;rec_z],zeros(3,1),eye(3),scatPos,zeros(size(scatPos)),scatCoef');
% Transmit 5G and LTE signal through channel
% (modify channel and create transmission)
% release(chan)
% chan.TransmitArray=phased.ConformalArray('Taper',10); %single-element isotropic; taper=5 => very low accuracy
% chan.TransmitArrayPosition=txpos1;
% chan.TransmitArrayOrientationAxes=txaxes1;
p_5G_LTE=power_5G_LTE(randi(length(power_5G_LTE)));
g_5G_LTE=gain_5G_LTE(randi(length(gain_5G_LTE)));
commtx=phased.Transmitter('PeakPower',p_5G_LTE,'Gain',g_5G_LTE);
% (generate actual 5G signal)
if ~isempty(x1_5G)
y1_5G = commtx(x1_5G);
release(commchan);
y1_5G = commchan(y1_5G,[rec_xy;rec_z],zeros(3,1),eye(3),scatPos,zeros(size(scatPos)),scatCoef');
else
waveinfo5G.Bandwidth=[];
y1_5G = [eps zeros(1,length(y(:,1)))]';
end
% (generate actual LTE signal)
y1_LTE = commtx(x1_LTE);
release(commchan);
y1_LTE = commchan(y1_LTE,[rec_xy;rec_z],zeros(3,1),eye(3),scatPos,zeros(size(scatPos)),scatCoef');
% endn timing
toc
%% Combining signals
% Make all signals the same length
% (signal length)
length_sig = min([length(y) length(y1_5G) length(y1_LTE)]);
% (ASR signal)
y=y(1:length_sig);
% (5G)
[~,index]=max(y1_5G(1:(end-length_sig)));
if ~isempty(index)
y1_5G=y1_5G(index:(index-1+length_sig));
end
% (LTE)
[~,index]=max(y1_LTE(1:(end-length_sig)));
if ~isempty(index)
y1_LTE=y1_LTE(index:(index-1+length_sig));
end
% Combine 5G and LTE signal
if ~isempty(x1_5G)
% (initialize combiner)
sr = fs;
comb = comm.MultibandCombiner("InputSampleRate",sr, ...
"OutputSampleRateSource","Property",...
"OutputSampleRate",sr);
% (decide on the frequency space between LTE and 5G)
maxFreqSpace = sr - (waveinfo5G.Bandwidth + waveinfoLTE.Bandwidth);
if maxFreqSpace > 0
freqSpace = round(rand()*maxFreqSpace/1e6)*1e6;
freqPerPixel = sr / imageSize(2);
maxStartFreq = sr - (waveinfo5G.Bandwidth + waveinfoLTE.Bandwidth + freqSpace) - freqPerPixel;
% (decide if 5G or LTE is on the left)
LTEFirst = randi([0 1]);
if LTEFirst
combIn = [y1_LTE, y1_5G];
labels = {'LTE','NR'}; %#ok<NASGU>
startFreq = round(rand()*maxStartFreq/1e6)*1e6 - sr/2 + waveinfoLTE.Bandwidth/2;
bwMatrix = [-waveinfoLTE.Bandwidth/2 +waveinfoLTE.Bandwidth/2; -waveinfo5G.Bandwidth/2 +waveinfo5G.Bandwidth/2]'; %#ok<NASGU>
else
combIn = [y1_5G, y1_LTE];
labels = {'NR','LTE'}; %#ok<NASGU>
startFreq = round(rand()*maxStartFreq/1e6)*1e6 - sr/2 + waveinfo5G.Bandwidth/2;
bwMatrix = [-waveinfo5G.Bandwidth/2 +waveinfo5G.Bandwidth/2; -waveinfoLTE.Bandwidth/2 +waveinfoLTE.Bandwidth/2]'; %#ok<NASGU>
end
release(comb)
comb.FrequencyOffsets = [startFreq startFreq+waveinfoLTE.Bandwidth/2 + freqSpace + waveinfo5G.Bandwidth/2];
txWave_5G_LTE = comb(combIn);
end
end
% Combine all 5G/LTE signals with ASR
y_ASR_5G=y+y1_5G;
y_ASR_LTE=y+y1_LTE;
if ~isempty(x1_5G)
if maxFreqSpace > 0
y_ASR_5G_LTE=y+txWave_5G_LTE;
end
end
% Add gaussian noise
SNRdB = SNRdBVec{randi([1 length(SNRdBVec)])};
y_ASR_5G_gauss = awgn(y_ASR_5G,SNRdB);
y_ASR_LTE_gauss = awgn(y_ASR_LTE,SNRdB);
if ~isempty(x1_5G)
if maxFreqSpace > 0
y_ASR_5G_LTE_gauss = awgn(y_ASR_5G_LTE,SNRdB,'measured');
end
end
%% Spectrograms
% Spectrogram parameters
overlap = 10;
Nfft = 4096;
sr = fs;
% Label parameters
% pixelClassNames = {'Noise','5G','LTE','ASR'}; %#ok<NASGU>
% Visualize
%{
% (individual)
figure()
spectrogram(y,hann(256),overlap,...
Nfft,sr,'centered','psd','xaxis');
title("ASR")
figure()
spectrogram(y1_5G,hann(256),overlap,...
Nfft,sr,'centered',
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
一、前言 此示例展示了如何使用使用合成雷达和无线通信信号训练的语义分割神经网络执行频谱检测。经过训练的神经网络可以识别出现在相同接收频谱中的雷达和无线通信信号。此外,网络可以识别接收信号的占用带宽。 二、介绍 由于对更高速度和更大覆盖范围的需求不断增加,现代无线通信系统正在向更高的频段和更大的信号带宽发展。这些较高的频段位于雷达系统传统上使用的范围内。因此,雷达系统和无线通信系统的频谱可能会重叠,这推动了对频谱共享的需求。这就要求未来的雷达和无线通信系统包括频谱传感,以检测占用的空间以避免冲突。此示例演示如何对频谱传感系统进行建模。我们首先合成一个由雷达和无线通信信号组成的数据集。这些数据用于训练和测试深度学习网络。然后使用经过训练的网络来识别信号和这些信号的相应占用带宽。 三、设置场景 考虑位于场景原点的机场监视雷达。该雷达的工作频率为2.8 GHz,并使用增益为32.8 dB的反射器天线。发射功率设置为 25 kW。 由于机场雷达附近存在5G和LTE信号,因此我们使用5G工具箱和LTE工具箱为这些无线标准定义了一组信号。
资源推荐
资源详情
资源评论
收起资源包目录
使用合成雷达和无线通信信号训练的语义分割神经网络执行频谱检测.rar (7个子文件)
使用合成雷达和无线通信信号训练的语义分割神经网络执行频谱检测
SpectrumSensingRadarCommDeepLearningExample.mlx 44KB
helperGenerateRadarCommData.m 16KB
helperSpecSenseDisplayResults.m 2KB
radarCommDLTraining.PNG 84KB
helperRadarCommPartitionData.m 1KB
helperGenerateRadarCommNRSignal.m 9KB
helperGenerateRadarCommLTESignal.m 2KB
共 7 条
- 1
资源评论
- wangtong0992023-11-28资源内容详尽,对我有使用价值,谢谢资源主的分享。
- ajxe_71762602023-05-23资源是宝藏资源,实用也是真的实用,感谢大佬分享~
珞瑜·
- 粉丝: 10w+
- 资源: 500
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功