|
199 | 199 | %Bit-width of the compressed IQ samples.
|
200 | 200 | % Only applies if ApplyOFHCompression is set to true.
|
201 | 201 | CompIQwidth (1, 1) double {mustBeInteger, mustBeInRange(CompIQwidth, 1, 16)} = 9
|
| 202 | + %Channel estimator frequency-domain smoothing strategy ('none', 'mean', 'filter'). |
| 203 | + % Valid only for SRS estimator. |
| 204 | + SRSSmoothing (1, :) char {mustBeMember(SRSSmoothing, {'none', 'mean', 'filter'})} = 'filter' |
202 | 205 | %Time-domain interpolation strategy ('average', 'interpolate').
|
203 | 206 | % Valid only for SRS estimator.
|
204 | 207 | SRSInterpolation (1, :) char {mustBeMember(SRSInterpolation, {'average', 'interpolate'})} = 'average'
|
| 208 | + %Channel estimator CFO compensation. |
| 209 | + % Valid only for SRS estimator. |
| 210 | + SRSCompensateCFO (1, 1) logical = true |
| 211 | + |
205 | 212 | end % of properties (Nontunable)
|
206 | 213 |
|
207 | 214 | properties % Tunable
|
@@ -638,8 +645,11 @@ function stepImpl(obj, SNRIn, nFrames)
|
638 | 645 |
|
639 | 646 | if useSRSDecoder
|
640 | 647 | srsDemodulatePUSCH = srsMEX.phy.srsPUSCHDemodulator(EqualizerStrategy = obj.SRSEqualizerType);
|
641 |
| - srsChannelEstimate = srsMEX.phy.srsMultiPortChannelEstimator(ImplementationType = obj.SRSEstimatorType, ... |
642 |
| - Smoothing = 'filter', Interpolation = obj.SRSInterpolation, CompensateCFO = true); |
| 648 | + srsChannelEstimate = srsMEX.phy.srsMultiPortChannelEstimator(... |
| 649 | + ImplementationType = obj.SRSEstimatorType, ... |
| 650 | + Smoothing = obj.SRSSmoothing, ... |
| 651 | + Interpolation = obj.SRSInterpolation, ... |
| 652 | + CompensateCFO = obj.SRSCompensateCFO); |
643 | 653 | end
|
644 | 654 |
|
645 | 655 | % %%% Simulation loop.
|
@@ -1040,7 +1050,7 @@ function releaseImpl(obj)
|
1040 | 1050 | flag = isempty(obj.ThroughputMATLABCtr) || strcmp(obj.ImplementationType, 'srs');
|
1041 | 1051 | case {'ThroughputSRS', 'BlockErrorRateSRS'}
|
1042 | 1052 | flag = isempty(obj.ThroughputSRSCtr) || strcmp(obj.ImplementationType, 'matlab');
|
1043 |
| - case {'SRSEstimatorType', 'SRSInterpolation'} |
| 1053 | + case {'SRSEstimatorType', 'SRSSmoothing', 'SRSInterpolation', 'SRSCompensateCFO'} |
1044 | 1054 | flag = strcmp(obj.ImplementationType, 'matlab') || obj.PerfectChannelEstimator;
|
1045 | 1055 | case 'SRSEqualizerType'
|
1046 | 1056 | flag = strcmp(obj.ImplementationType, 'matlab');
|
@@ -1078,8 +1088,8 @@ function releaseImpl(obj)
|
1078 | 1088 | ... Compression.
|
1079 | 1089 | 'ApplyOFHCompression', 'CompIQwidth', ...
|
1080 | 1090 | ... Other simulation details.
|
1081 |
| - 'ImplementationType', 'SRSEqualizerType', 'SRSEstimatorType', 'SRSInterpolation', ... |
1082 |
| - 'QuickSimulation', 'DisplaySimulationInformation', 'DisplayDiagnostics'}; |
| 1091 | + 'ImplementationType', 'SRSEqualizerType', 'SRSEstimatorType', 'SRSSmoothing', 'SRSInterpolation', ... |
| 1092 | + 'SRSCompensateCFO', 'QuickSimulation', 'DisplaySimulationInformation', 'DisplayDiagnostics'}; |
1083 | 1093 | groups = matlab.mixin.util.PropertyGroup(confProps, 'Configuration');
|
1084 | 1094 |
|
1085 | 1095 | resProps = {};
|
|
0 commit comments