nrPUSCHDMRS
Generate PUSCH DM-RS symbols
Description
returns a matrix containing demodulation reference signal (DM-RS) symbols of physical uplink
shared channel (PUSCH), as defined in TS 38.211 Section 6.4.1.1.1 [1]. sym = nrPUSCHDMRS(carrier,pusch)carrier
specifies the carrier configuration parameters for a specific OFDM numerology.
pusch specifies the PUSCH configuration parameters.
Examples
Create a carrier configuration object with default properties. This object corresponds to a 10 MHz carrier with 15 kHz subcarrier spacing.
carrier = nrCarrierConfig;
Create a physical uplink shared channel (PUSCH) configuration object with specified properties. When transform precoding is set to 0, the waveform type is cyclic-prefix orthogonal frequency division multiplexing (CP-OFDM).
pusch = nrPUSCHConfig;
pusch.TransformPrecoding = 0;
pusch.TransmissionScheme = 'codebook';
pusch.NumAntennaPorts = 4;
pusch.TPMI = 0;Configure PUSCH demodulation reference signal (DM-RS) with specified parameters.
pusch.DMRS.DMRSAdditionalPosition = 1; pusch.DMRS.DMRSTypeAPosition = 2; pusch.DMRS.DMRSPortSet = 2; pusch.DMRS.NIDNSCID = 10; pusch.DMRS.NSCID = 1;
Generate DM-RS symbols associated with PUSCH of single data type.
sym = nrPUSCHDMRS(carrier,pusch,'OutputDataType','single')
sym = 624×4 single matrix
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 + 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 + 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.3536 - 0.3536i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
⋮
Create a carrier configuration with 30 kHz subcarrier spacing and 5 MHz transmission bandwidth.
carrier = nrCarrierConfig; carrier.SubcarrierSpacing = 30; carrier.NSizeGrid = 11;
Create a physical uplink shared channel (PUSCH) configuration object with specified properties. When transform precoding is set to 1, the waveform type is discrete fourier transform spread orthogonal frequency division multiplexing (DFT-s-OFDM).
pusch = nrPUSCHConfig;
pusch.NSizeBWP = 9;
pusch.NStartBWP = 1;
pusch.PRBSet = 0:3;
pusch.TransformPrecoding = 1;
pusch.FrequencyHopping = 'intraSlot';
pusch.SecondHopStartPRB = 5;Create a PUSCH demodulation reference signal (DM-RS) object with specified properties.
dmrs = nrPUSCHDMRSConfig; dmrs.DMRSAdditionalPosition = 1; dmrs.DMRSTypeAPosition = 2; dmrs.DMRSPortSet = 3; dmrs.GroupHopping = 1; dmrs.SequenceHopping = 0; dmrs.NRSID = 10;
Assign the PUSCH DM-RS configuration object to DMRS property of PUSCH configuration object.
pusch.DMRS = dmrs;
Generate PUSCH DM-RS symbols and indices for the specified carrier, PUSCH configuration, and output formatting name-value pair argument.
sym = nrPUSCHDMRS(carrier,pusch,'OutputDataType','single')
sym = 96×1 single column vector
-0.7071 - 0.7071i
-0.7071 - 0.7071i
-0.7071 - 0.7071i
0.7071 - 0.7071i
-0.7071 - 0.7071i
-0.7071 - 0.7071i
-0.7071 - 0.7071i
0.7071 - 0.7071i
0.7071 + 0.7071i
-0.7071 + 0.7071i
-0.7071 - 0.7071i
-0.7071 + 0.7071i
-0.7071 - 0.7071i
0.7071 + 0.7071i
-0.7071 - 0.7071i
⋮
ind = nrPUSCHDMRSIndices(carrier,pusch,'IndexBase','0based','IndexOrientation','bwp')
ind = 96×1 uint32 column vector
217
219
221
223
225
227
229
231
233
235
237
239
241
243
245
⋮
Create a bandwidth part (BWP) grid, and then map the DM-RS symbols on the grid.
bwp = complex(zeros([pusch.NSizeBWP*12 carrier.SymbolsPerSlot pusch.NumLayers]));
bwp(ind+1) = sym; % Map the DM-RS symbolsMap the BWP to the carrier resource grid, and then display the carrier grid.
grid = complex(zeros([carrier.NSizeGrid*12 carrier.SymbolsPerSlot pusch.NumLayers])); % Create carrier resource grid offset = pusch.NStartBWP-carrier.NStartGrid; % BWP start location in the carrier grid grid(offset*12+1:(offset+pusch.NSizeBWP)*12,:,:) = bwp; imagesc(abs(grid(:,:,1))); axis xy; xlabel('OFDM Symbols'); ylabel('Subcarriers'); title('PUSCH DM-RS Resource Elements in the Carrier Resource Grid');

Input Arguments
Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig
object. This function uses only these properties of the nrCarrierConfig object.
PUSCH configuration parameters, specified as an nrPUSCHConfig object. This
function uses only these properties of the nrPUSCHConfig object.
For
operation with shared spectrum channel access for frequency range 1 (FR1), set the Interlacing property to true, then use the
RBSetIndex and InterlaceIndex object properties to specify the allocated frequency
resources. (since R2023b)
Data type for the generated DM-RS symbols, specified as 'double'
or 'single'.
Data Types: char | string
Output Arguments
DM-RS symbols, returned as a complex matrix. The number of columns correspond to the number of antenna ports configured.
Data Types: single | double
Complex Number Support: Yes
References
[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
Extended Capabilities
Usage notes and limitations:
The
datatype input argument must be compile-time constant. For example,
when specifying 'single' as the output data type, include
{coder.Constant('OutputDataType'),coder.Constant('single')} in the
-args value of the codegen function. For more
information, see the coder.Constant (MATLAB Coder) class.
Version History
Introduced in R2020aThe Modulation, NumLayers, NumAntennaPorts, TPMI, and CodebookType object properties of the pusch
input add support to eight antenna ports, up to eight layers, and two codewords in PUSCH
transmissions.
Use the IntraCellGuardBands object property of the carrier input
to specify intracell guard bands.
Use the Interlacing, RBSetIndex, and InterlaceIndex properties of the pusch input
argument to configure interlaced PUSCH transmissions.
See Also
Functions
Objects
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)