how to obtain pathgains of winner2 channel
4 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
回答(1 个)
Yukthi S
2024-6-3
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!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Propagation and Channel Models 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!