📄 tx_radon_hurwitz.m
字号:
function ofdm_syms_out = tx_radon_hurwitz(mod_ofdm_syms,SimulationParameters)
global SimulationConstants;
%if there is zeropad option
if SimulationParameters.ZeroPad
num_symbols = length(mod_ofdm_syms)/sum(SimulationConstants.NumDataSubc);
mod_syms = reshape(mod_ofdm_syms, sum(SimulationConstants.NumDataSubc), num_symbols);
else
num_symbols = length(mod_ofdm_syms)/SimulationParameters.FFTPoints;
mod_syms = reshape(mod_ofdm_syms, SimulationParameters.FFTPoints, num_symbols);
end
if SimulationParameters.TxDiv==2
%if there is zeropad option
if SimulationParameters.ZeroPad
ant1_syms = zeros(sum(SimulationConstants.NumDataSubc), num_symbols);
ant2_syms = zeros(sum(SimulationConstants.NumDataSubc), num_symbols);
else
ant1_syms = zeros(SimulationParameters.FFTPoints, num_symbols);
ant2_syms = zeros(SimulationParameters.FFTPoints, num_symbols);
end
% unchanged symbols
ant1_syms(:,1:2:num_symbols) = mod_syms(:,1:2:num_symbols);
ant2_syms(:,1:2:num_symbols) = mod_syms(:,2:2:num_symbols);
% transformed symbols
ant1_syms(:,2:2:num_symbols) = -conj(mod_syms(:,2:2:num_symbols));
ant2_syms(:,2:2:num_symbols) = conj(mod_syms(:,1:2:num_symbols));
ofdm_syms_out = zeros(2, length(mod_ofdm_syms));
ofdm_syms_out(1,:) = ant1_syms(:).';
ofdm_syms_out(2,:) = ant2_syms(:).';
elseif SimulationParameters.TxDiv==4
%if there is zeropad option
if SimulationParameters.ZeroPad
%make the number of columns a multiple of 8
while rem(num_symbols,4)~=0
temp=zeros(sum(SimulationConstants.NumDataSubc),1);
mod_syms=[mod_syms temp];
num_symbols=num_symbols+1;
end
ant1_syms = zeros(sum(SimulationConstants.NumDataSubc), 2*num_symbols);
ant2_syms = zeros(sum(SimulationConstants.NumDataSubc), 2*num_symbols);
ant3_syms = zeros(sum(SimulationConstants.NumDataSubc), 2*num_symbols);
ant4_syms = zeros(sum(SimulationConstants.NumDataSubc), 2*num_symbols);
else
%make the number of columns a multiple of 8
while rem(num_symbols,4)~=0
temp=zeros(SimulationParameters.FFTPoints,1);
mod_syms=[mod_syms temp];
num_symbols=num_symbols+1;
end
ant1_syms = zeros(SimulationParameters.FFTPoints, 2*num_symbols);
ant2_syms = zeros(SimulationParameters.FFTPoints, 2*num_symbols);
ant3_syms = zeros(SimulationParameters.FFTPoints, 2*num_symbols);
ant4_syms = zeros(SimulationParameters.FFTPoints, 2*num_symbols);
end
% unchanged symbols
ant1_syms(:,1:8:2*num_symbols) = mod_syms(:,1:4:num_symbols);
ant2_syms(:,1:8:2*num_symbols) = mod_syms(:,2:4:num_symbols);
ant3_syms(:,1:8:2*num_symbols) = mod_syms(:,3:4:num_symbols);
ant4_syms(:,1:8:2*num_symbols) = mod_syms(:,4:4:num_symbols);
% transformed symbols
ant1_syms(:,2:8:2*num_symbols) = -mod_syms(:,2:4:num_symbols);
ant2_syms(:,2:8:2*num_symbols) = mod_syms(:,1:4:num_symbols);
ant3_syms(:,2:8:2*num_symbols) = -mod_syms(:,4:4:num_symbols);
ant4_syms(:,2:8:2*num_symbols) = mod_syms(:,3:4:num_symbols);
ant1_syms(:,3:8:2*num_symbols) = -mod_syms(:,3:4:num_symbols);
ant2_syms(:,3:8:2*num_symbols) = mod_syms(:,4:4:num_symbols);
ant3_syms(:,3:8:2*num_symbols) = mod_syms(:,1:4:num_symbols);
ant4_syms(:,3:8:2*num_symbols) = -mod_syms(:,2:4:num_symbols);
ant1_syms(:,4:8:2*num_symbols) = -mod_syms(:,4:4:num_symbols);
ant2_syms(:,4:8:2*num_symbols) = -mod_syms(:,3:4:num_symbols);
ant3_syms(:,4:8:2*num_symbols) = mod_syms(:,2:4:num_symbols);
ant4_syms(:,4:8:2*num_symbols) = mod_syms(:,1:4:num_symbols);
ant1_syms(:,5:8:2*num_symbols) = conj(mod_syms(:,1:4:num_symbols));
ant2_syms(:,5:8:2*num_symbols) = conj(mod_syms(:,2:4:num_symbols));
ant3_syms(:,5:8:2*num_symbols) = conj(mod_syms(:,3:4:num_symbols));
ant4_syms(:,5:8:2*num_symbols) = conj(mod_syms(:,4:4:num_symbols));
ant1_syms(:,6:8:2*num_symbols) = -conj(mod_syms(:,2:4:num_symbols));
ant2_syms(:,6:8:2*num_symbols) = conj(mod_syms(:,1:4:num_symbols));
ant3_syms(:,6:8:2*num_symbols) = -conj(mod_syms(:,4:4:num_symbols));
ant4_syms(:,6:8:2*num_symbols) = conj(mod_syms(:,3:4:num_symbols));
ant1_syms(:,7:8:2*num_symbols) = -conj(mod_syms(:,3:4:num_symbols));
ant2_syms(:,7:8:2*num_symbols) = conj(mod_syms(:,4:4:num_symbols));
ant3_syms(:,7:8:2*num_symbols) = conj(mod_syms(:,1:4:num_symbols));
ant4_syms(:,7:8:2*num_symbols) = -conj(mod_syms(:,2:4:num_symbols));
ant1_syms(:,8:8:2*num_symbols) = -conj(mod_syms(:,4:4:num_symbols));
ant2_syms(:,8:8:2*num_symbols) = -conj(mod_syms(:,3:4:num_symbols));
ant3_syms(:,8:8:2*num_symbols) = conj(mod_syms(:,2:4:num_symbols));
ant4_syms(:,8:8:2*num_symbols) = conj(mod_syms(:,1:4:num_symbols));
ofdm_syms_out = zeros(4, length(ant1_syms(:).'));
ofdm_syms_out(1,:) = ant1_syms(:).';
ofdm_syms_out(2,:) = ant2_syms(:).';
ofdm_syms_out(3,:) = ant3_syms(:).';
ofdm_syms_out(4,:) = ant4_syms(:).';
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -