|
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