Azzera filtri
Azzera filtri

how to obtain pathgains of winner2 channel

2 visualizzazioni (ultimi 30 giorni)
秉铜 项
秉铜 项 il 9 Gen 2021
Risposto: Yukthi S il 3 Giu 2024
the channel is generated by the following code
BSAA = winner2.AntennaArray('UCA', 1, 0.02); % UCA-8 array for BS
MSAA1 = winner2.AntennaArray('ULA', 1, 0.01); % ULA-2 array for MS
MSIdx = [2];
BSIdx = {1};
numLinks = 2;
rndSeed = 5;
cfgLayout = winner2.layoutparset(MSIdx,BSIdx, numLinks,[BSAA,MSAA1],[],rndSeed);
cfgLayout.Pairing = [1 ; 2 ]; % Index in cfgLayout.Stations
cfgLayout.ScenarioVector = [6];
numBSSect = sum(cfgLayout.NofSect);
numMS = length(MSIdx);
cfgLayout.Stations(2).Velocity=[1.6;0;0];
cfgLayout.Stations(1).Pos(1:2) = [50, 150];
cfgLayout.Stations(2).Pos(1:2) = [10, 180]; % 8 meters away from BS
BSPos = cell2mat({cfgLayout.Stations(1:numBSSect).Pos});
MSPos = cell2mat({cfgLayout.Stations(numBSSect+1:end).Pos});
frameLen = 64; % Number of samples to be generated
cfgWim = winner2.wimparset;
cfgWim.NumTimeSamples = 80;
cfgWim.IntraClusterDsUsed = 'yes';
cfgWim.CenterFrequency = 2.76e9;
cfgWim.UniformTimeSampling = 'yes';
cfgWim.ShadowingModelUsed = 'yes';
cfgWim.PathLossModelUsed = 'no';
cfgWim.UseManualPropCondition = 'yes';
cfgWim.RandomSeed = 31415927;
cfgWim.NormalizeChannelOutputs='false';
downWINNERChan = comm.WINNER2Channel(cfgWim,cfgLayout);
and the input data is
sourceData = randi([0 1],(80,1);
then the pathgains and output are obainted
[ChanOut, pathGains] = downWINNERChan(sourceData);
pathGains1=squeeze(cell2mat(pathGains));
pathGains1=sum(pathGains)';
rx_data=cell2mat(ChanOut);
tx_data_estimate=rx_data./pathGains;
I wonder why tx_data_estimate is different from sourceData?

Risposte (1)

Yukthi S
Yukthi S il 3 Giu 2024
Hello
I see that you are observing some discrepancies between ‘tx_data_estimate’ and ‘sourceData’.
Firstly, it is important to understand that WINNER II channel model simulates a complex wireless communication environment including effects like multipath fading, shadowing, noise and antenna patterns. These effects inherently modify the signal in a way that the received signal (rx_data) cannot be directly divided by the path gains (pathGains) to perfectly reconstruct the original transmitted data (sourceData). The path gains represent the complex channel effects on the signal and simply dividing the received signal by these gains doesn't fully explain all the changes the signal goes through as it travels through the channel.
But, if you still want to perform this operation to calculate estimate of transmitted signal, there are some errors in the code snippet you provided which need to be addressed.
sourceData = randi([0 1],80,1);
%instead of sourceData = randi([0 1],(80,1);
The line "pathGains1=squeeze(cell2mat(pathGains));" attempts to convert pathGains from a cell array to a matrix, which is correct in concept. However, the subsequent operation "pathGains1=sum(pathGains)';" seems to be an attempt to sum the path gains but is incorrectly applied to the unprocessed "pathGains" variable rather than "pathGains1". The corrected approach would be:
[ChanOut, pathGains] = downWINNERChan(sourceData);
pathGains1=squeeze(cell2mat(pathGains));
pathGains2=sum(pathGains1)';
rx_data=cell2mat(ChanOut);
tx_data_estimate=rx_data./pathGains2;
I hope this addresses your query!

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by