Main Content

info

Characteristic information about object

    Description

    example

    s = info(obj) returns a structure containing the characteristic information of the specified input object obj.

    Examples

    collapse all

    Get information from a dvbs2WaveformGenerator System object by using the info function. Then retrieve the filter residual samples by using the flushFilter object function.

    This example uses MAT-files with LDPC parity matrices. If the MAT-files are not available on the path, download and unzip the MAT-files by entering this code at the MATLAB command prompt.

    if ~exist('dvbs2xLDPCParityMatrices.mat','file')
        if ~exist('s2xLDPCParityMatrices.zip', 'file')
            url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip';
            websave('s2xLDPCParityMatrices.zip',url);
            unzip('s2xLDPCParityMatrices.zip');
        end
    addpath('s2xLDPCParityMatrices');
    end

    Specify the number of physical layer (PL) frames per stream.

    numFrames = 1;

    Create a Digital Video Broadcasting standard (DVB-S2) System object, and then specify its properties.

    s2WaveGen = dvbs2WaveformGenerator;
    s2WaveGen.NumInputStreams = 2;
    s2WaveGen.MODCOD = [21 16];
    s2WaveGen.DFL   = 47008;
    s2WaveGen.ISSYI = true;
    s2WaveGen.SamplesPerSymbol = 2;
    disp(s2WaveGen)
      dvbs2WaveformGenerator with properties:
    
               StreamFormat: "TS"
            NumInputStreams: 2
                   FECFrame: "normal"
                     MODCOD: [21 16]
                        DFL: 47008
              ScalingMethod: "outer radius as 1"
                  HasPilots: 0
              RolloffFactor: 0.3500
        FilterSpanInSymbols: 10
           SamplesPerSymbol: 2
                      ISSYI: true
                 ISCRFormat: "short"
    
      Show all properties
    

    Get the characteristic information about the DVB-S2 waveform generator.

    info(s2WaveGen)
    ans = struct with fields:
          ModulationScheme: {'16APSK'  '8PSK'}
        LDPCCodeIdentifier: {'5/6'  '8/9'}
    
    

    Create the bit vector of input information bits, data, of concatenated TS user packets.

    syncBits = [0 1 0 0 0 1 1 1]';       % Sync byte for TS packet is 47 Hex
    pktLen = 1496;                       % UP length without sync bits is 1496
    data =  cell(1,s2WaveGen.NumInputStreams);
    for i = 1:s2WaveGen.NumInputStreams
        numPkts = s2WaveGen.MinNumPackets(i)*numFrames;
        txRawPkts = randi([0 1],pktLen,numPkts);
        ISSY = randi([0 1],16,numPkts);   % ISCRFormat is 'short' by default
                                          % 'short' implies the default length of ISSY as 2 bytes
        txPkts = [repmat(syncBits,1,numPkts);txRawPkts;ISSY];    % ISSY is appended at the end of UP
        data{i} = txPkts(:);
    end

    Generate a DVB-S2 time-domain waveform using the information bits.

    txWaveform = [s2WaveGen(data)];

    Check the filter residual data samples that remain in the filter delay.

    flushFilter(s2WaveGen)
    ans = 20×1 complex
    
       0.0153 + 0.4565i
       0.2483 + 0.5535i
       0.3527 + 0.3972i
       0.3541 - 0.0855i
       0.3505 - 0.4071i
       0.4182 - 0.1962i
       0.5068 + 0.0636i
       0.4856 - 0.1532i
       0.3523 - 0.4153i
       0.1597 - 0.2263i
          ⋮
    
    

    Get information from a dvbs2xWaveformGenerator System object by using the info function. Then retrieve the filter residual samples by using the flushFilter object function.

    This example uses MAT-files with LDPC parity matrices. If the MAT-files are not available on the path, download and unzip the MAT-files by entering this code at the MATLAB command prompt.

    if ~exist('dvbs2xLDPCParityMatrices.mat','file')
        if ~exist('s2xLDPCParityMatrices.zip','file')
            url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip';
            websave('s2xLDPCParityMatrices.zip',url);
            unzip('s2xLDPCParityMatrices.zip');
        end
    addpath('s2xLDPCParityMatrices');
    end

    Specify the number of physical layer (PL) frames per stream.

    numFrames = 2;

    Create a Digital Video Broadcasting Satellite Second Generation extended (DVB-S2X) System object and specify its properties. Use time slicing technique and variable coding and modulation configuration mode.

    s2xWaveGen = dvbs2xWaveformGenerator();
    s2xWaveGen.HasTimeSlicing = true;
    s2xWaveGen.NumInputStreams = 2;
    s2xWaveGen.PLSDecimalCode = [135 145];   % QPSK 9/20 and 8PSK 25/36
    s2xWaveGen.DFL = [18048 44656];
    s2xWaveGen.PLScramblingIndex = [0 1];
    disp(s2xWaveGen)
      dvbs2xWaveformGenerator with properties:
    
               StreamFormat: "TS"
             HasTimeSlicing: true
            NumInputStreams: 2
             PLSDecimalCode: [135 145]
                        DFL: [18048 44656]
          PLScramblingIndex: [0 1]
              RolloffFactor: 0.3500
        FilterSpanInSymbols: 10
           SamplesPerSymbol: 4
                      ISSYI: false
    
      Show all properties
    

    Get the characteristic information about the DVB-S2X waveform generator.

    info(s2xWaveGen)
    ans = struct with fields:
                  FECFrame: {'normal'  'normal'}
          ModulationScheme: {'QPSK'  '8PSK'}
        LDPCCodeIdentifier: {'9/20'  '25/36'}
    
    

    Create the bit vector of input information bits, data, of concatenated TS user packets for each input stream.

    syncBits = [0 1 0 0 0 1 1 1]';       % Sync byte for TS packet is 47 Hex
    pktLen = 1496;                       % UP length without sync bits is 1496
    data =  cell(1, s2xWaveGen.NumInputStreams);
    for i = 1:s2xWaveGen.NumInputStreams
        numPkts = s2xWaveGen.MinNumPackets(i)*numFrames;
        txRawPkts = randi([0 1], pktLen, numPkts);
        txPkts = [repmat(syncBits, 1, numPkts); txRawPkts];
        data{i} = txPkts(:);
    end

    Generate a DVB-S2X time-domain waveform using the information bits.

    txWaveform = s2xWaveGen(data);

    Check the filter residual data samples that remain in the filter delay.

    flushFilter(s2xWaveGen)
    ans = 40×1 complex
    
      -0.2412 - 0.0143i
      -0.2619 - 0.0861i
      -0.2726 - 0.1337i
      -0.2511 - 0.1597i
      -0.1851 - 0.1680i
      -0.0780 - 0.1602i
       0.0448 - 0.1288i
       0.1598 - 0.0751i
       0.2482 - 0.0049i
       0.3026 + 0.0702i
          ⋮
    
    

    Get information from a dvbrcs2WaveformGenerator System object by using the info object function.

    Create a DVB-RCS2 System object, and then specify its properties.

    wg = dvbrcs2WaveformGenerator;
    wg.ContentType = "control";
    wg.WaveformID = 33;
    wg.FilterSpanInSymbols = 12;
    disp(wg)
      dvbrcs2WaveformGenerator with properties:
    
          TransmissionFormat: "TC-LM"
                 ContentType: "control"
            IsCustomWaveform: false
                  WaveformID: 33
         PreBurstGuardLength: 0
        PostBurstGuardLength: 0
         FilterSpanInSymbols: 12
            SamplesPerSymbol: 4
    
      Use get to show all properties
    

    Get the characteristic information about the DVB-RCS2 waveform generator.

    info(wg)
    ans = struct with fields:
                  BurstLength: 566
         PayloadLengthInBytes: 100
                MappingScheme: "QPSK"
                     CodeRate: "3/4"
               PreambleLength: 32
              PostambleLength: 0
                  PilotPeriod: 0
             PilotBlockLength: 0
        PermutationParameters: [23 10 8 2 1]
                   UniqueWord: "0C330C0FF3F3033F"
                     PilotSum: 0
    
    

    Get information from a ccsdsTMWaveformGenerator System object by using the info function. Then retrieve the filter residual samples by using the flushFilter object function.

    Create a Consultative Committee for Space Data Systems (CCSDS) Telemetry (TM) System object. Set the waveform type as synchronization and channel coding with low-density parity-check (LDPC) channel coding. Display the properties.

    tmWaveGen = ccsdsTMWaveformGenerator;
    tmWaveGen.WaveformSource = "synchronization and channel coding";
    tmWaveGen.ChannelCoding = "LDPC";
    tmWaveGen.NumBitsInInformationBlock = 1024;
    tmWaveGen.Modulation = "QPSK";
    tmWaveGen.CodeRate = "1/2";
    disp(tmWaveGen)
      ccsdsTMWaveformGenerator with properties:
    
                   WaveformSource: "synchronization and channel coding"
                    HasRandomizer: true
                           HasASM: true
                        PCMFormat: "NRZ-L"
    
       Channel coding
                    ChannelCoding: "LDPC"
        NumBitsInInformationBlock: 1024
                         CodeRate: "1/2"
                     IsLDPCOnSMTF: false
    
       Digital modulation and filter
                       Modulation: "QPSK"
               PulseShapingFilter: "root raised cosine"
                    RolloffFactor: 0.3500
              FilterSpanInSymbols: 10
                 SamplesPerSymbol: 10
    
      Use get to show all properties
    

    Specify the number of transfer frames.

    numTF = 20;

    Get the characteristic information about the CCSDS TM waveform generator.

    info(tmWaveGen)
    ans = struct with fields:
             ActualCodeRate: 0.5000
           NumBitsPerSymbol: 2
        SubcarrierFrequency: []
    
    

    Generate the input bits for the CCSDS TM waveform generator, and then generate the waveform.

    bits = randi([0 1], tmWaveGen.NumInputBits*numTF,1);
    waveform = tmWaveGen(bits);

    Check the filter residual data samples that remain in the filter delay.

    flushFilter(tmWaveGen)
    ans = 100×1 complex
    
      -0.0772 - 0.0867i
      -0.0751 - 0.0859i
      -0.0673 - 0.0788i
      -0.0549 - 0.0654i
      -0.0388 - 0.0469i
      -0.0200 - 0.0250i
       0.0002 - 0.0012i
       0.0208 + 0.0227i
       0.0405 + 0.0453i
       0.0587 + 0.0653i
          ⋮
    
    

    Get information from a etsiRicianChannel System object by using the info object function.

    Create a European Telecommunication Standards Institute (ETSI) Rician channel System object, and then specify its properties.

    chan = etsiRicianChannel;
    chan.SampleRate = 2e5;     
    chan.KFactor = 10;
    chan.MaximumDopplerShift = 20;
    chan.NumSinusoids = 58;
    disp(chan)
      etsiRicianChannel with properties:
    
                 SampleRate: 200000
                    KFactor: 10
        MaximumDopplerShift: 20
    
      Use get to show all properties
    

    Pass data through the channel.

    txWaveform = randi([0 1],500,1);
    rxWaveform = chan(txWaveform);

    Get the characteristic information about the ETSI Rician channel.

    info(chan)
    ans = struct with fields:
               ChannelFilterDelay: 0
        ChannelFilterCoefficients: 1
              NumSamplesProcessed: 500
    
    

    Get information from a gpsPCode System object™ by using the info object function. Observe how the precision of initial time impacts the generation of the P-code.

    Create a P-code generator System object™, and then specify its properties.

    format long
    pgen = gpsPCode
    pgen = 
      gpsPCode with properties:
    
                     PRNID: 1
          OutputCodeLength: 10230
        InitialStateFormat: "seconds"
               InitialTime: 0
    
    
    pgen.InitialStateFormat = "chips";
    pgen.InitialNumChipsElapsed = 8388600;

    Get the characteristic information about the P-code generator.

    pgen.info
    ans = struct with fields:
        TotalNumChipsElapsed: 8388600
         TotalSecondsElapsed: 0.820000000000000
    
    

    Advance the time by a quarter of a P-code chip time (that is, 0.25/10.23e6).

    pgen1 = gpsPCode;
    pgen1.InitialTime = pgen.info.TotalSecondsElapsed + 0.25/10.23e6
    pgen1 = 
      gpsPCode with properties:
    
                     PRNID: 1
          OutputCodeLength: 10230
        InitialStateFormat: "seconds"
               InitialTime: 0.820000024437928
    
    
    pgen1.info
    ans = struct with fields:
        TotalNumChipsElapsed: 8388600
         TotalSecondsElapsed: 0.820000000000000
    
    

    The info function output shows no increment in the TotalNumChipsElapsed in this case, because TotalNumChipsElapsed is calculated internally using the function round.

    Advance the time by half of a P-code chip time now (that is, 0.5/10.23e6).

    pgen2 = gpsPCode;
    pgen2.InitialTime = pgen.info.TotalSecondsElapsed + 0.5/10.23e6
    pgen2 = 
      gpsPCode with properties:
    
                     PRNID: 1
          OutputCodeLength: 10230
        InitialStateFormat: "seconds"
               InitialTime: 0.820000048875855
    
    
    pgen2.info
    ans = struct with fields:
        TotalNumChipsElapsed: 8388601
         TotalSecondsElapsed: 0.820000097751711
    
    

    The info function output now shows the TotalNumChipsElapsed is incremented by one, due to the internal usage of round() function.

    Compare the output of each System object call.

    code = pgen();
    code1 = pgen1();
    code2 = pgen2();
    isequal(code, code1) % code and code1 are equal
    ans = logical
       1
    
    
    isequal(code1,code2) % code1 and code2 are unequal
    ans = logical
       0
    
    

    Input Arguments

    collapse all

    Input object to get information from, specified as a dvbs2WaveformGenerator, dvbs2xWaveformGenerator, dvbrcs2WaveformGenerator, ccsdsTMWaveformGenerator, etsiRicianChannel, or gpsPCode System object™.

    Output Arguments

    collapse all

    Characteristic information of the specified object, returned as a structure. The fields of the structure depend on the obj input.

    • If obj is a dvbs2WaveformGenerator System object, the output structure has these fields, consisting of physical layer information about the Digital Video Broadcasting Satellite Second Generation (DVB-S2) waveform generator.

      FieldValueDescription
      ModulationSchemeString scalar (default) or cell array of character vectorsModulation scheme, returned as a string scalar for single-input stream and a cell array of character vectors of length equal to the NumInputStreams property of the dvbs2WaveformGenerator object for multi-input streams.
      LDPCCodeIdentifierString scalar (default) or cell array of character vectorsLDPC code identifier used in forward error correction (FEC), returned as a string scalar for single-input stream and a cell array of character vectors of length equal to NumInputStreams property of the dvbs2WaveformGenerator object for multi-input streams.

    • If obj is a dvbs2xWaveformGenerator System object, the output structure has these fields, consisting of physical layer information about the Digital Video Broadcasting Satellite Second Generation extended (DVB-S2X) waveform generator.

      FieldValueDescription
      FECFrameString scalar (default) or cell array of character vectorsFEC frame format, returned as a string scalar for single-input stream and a cell array of character vectors of length equal to NumInputStreams property of dvbs2xWaveformGenerator object for multi-input streams.
      ModulationSchemeString scalar (default) or cell array of character vectorsModulation scheme, returned as a string scalar for single-input stream and a cell array of character vectors of length equal to NumInputStreams property of dvbs2xWaveformGenerator object for multi-input streams.
      LDPCCodeIdentifierString scalar (default) or cell array of character vectorsLDPC code identifier used in forward error correction (FEC), returned as a string scalar for single-input stream and a cell array of character vectors of length equal to NumInputStreams property of dvbs2xWaveformGenerator object for multi-input streams.

    • If obj is a dvbrcs2WaveformGenerator System object, the output structure has these fields, consisting of physical layer information about the Digital Video Broadcasting Second Generation Return Channel over Satellite (DVB-RCS2) waveform generator.

      FieldValueDescription
      BurstLengthpositive integerLength of the burst, in symbols, prior to the pulse shaping, returned as a positive integer.
      PayloadLengthInBytesinteger in the range [3, 65,535]Input data length, in bytes, to the forward error correction (FEC) encoder, returned as a integer in the range [3, 65,535].
      MappingScheme"pi/2-BPSK", "QPSK", "8PSK", or "16QAM"Symbol mapping and modulation scheme to generate the DVB-RCS2 waveform, returned as "pi/2-BPSK", "QPSK", "8PSK", or "16QAM".
      CodeRate"1/3", "1/2", "2/3", "3/4", "4/5", "5/6", "6/7", or "7/8"Code rate of the channel encoder, returned as "1/3", "1/2", "2/3", "3/4", "4/5", "5/6", "6/7", or "7/8".
      PreambleLengthinteger in the range [0, 255]

      Number of preamble symbols that are prefixed to the burst symbols prior to the modulation, returned as a integer in the range [0, 255].

      When you set the TransmissionFormat property to "TC-LM", the unit of preamble length is symbols. When you set the TransmissionFormat property to "SS-TC-LM", the unit of preamble length is chips.

      PostambleLengthinteger in the range [0, 255]

      Number of postamble symbols that are suffixed to the burst symbols, prior to the modulation, returned as a integer in the range [0, 255].

      When you set the TransmissionFormat property to "TC-LM", the unit of preamble length is symbols. When you set the TransmissionFormat property to "SS-TC-LM", the unit of preamble length is chips.

      PilotPeriodinteger in the range [0, 4095]

      Pilot symbol periodicity, including the burst symbols, returned as a integer in the range [0, 4095].

      This period represents the length of the sequence from the first symbol of a pilot block to the first symbol of the next pilot block in symbols or chips.

      PilotBlockLengthinteger in the range [1, 255]Length of the pilot block, in symbols, returned as a integer in the range [1, 255].
      PermutationParametersfive-element vector

      DVB-RCS2 turbo encoder permutation control parameters that are used to generate turbo encoder interleaver indices, returned as a five-element vector in order: P, Q0, Q1, Q2, and Q3.

      UniqueWordcharacter array or string scalarHexadecimal string consisting of combined symbols of the preamble, one pilot block, and the postamble sequence, returned as a character array or string scalar.

    • If obj is a ccsdsTMWaveformGenerator System object, the output structure has these fields, consisting of physical layer information about the Consultative Committee for Space Data Systems (CCSDS) Telemetry (TM) waveform generator.

      FieldValueDescription
      ActualCodeRatepositive scalar in range [0 1]Numeric value of the code rate of the channel coding scheme, returned as a positive scalar in the range [0, 1]. This value is used to generate the CCSDS TM waveform.
      NumBitsPerSymbolpositive integerNumber of bits per modulated symbol, returned as a positive integer.
      SubcarrierFrequencypositive scalarSubcarrier frequency, returned as a positive scalar. This field is applicable only when the Modulation property of ccsdsTMWaveformGenerator object is set to "PCM/PSK/PM". For other cases, this value is returned as null.

    • If obj is an etsiRicianChannel System object, the output structure has these fields, consisting of information about the fading channel.

      FieldValueDescription
      ChannelFilterDelay0Channel filter delay in samples returned as 0 always (due to flat-fading nature of the channel).
      ChannelFilterCoefficients1Channel filter coefficient used to convert path gains to channel filter tap gains, returned as 1 always (as etsiRicianChannel describes a single path channel).
      NumSamplesProcessedpositive integerNumber of samples processed by the channel object since the last reset, returned as a positive integer.

    • If obj is a gpsPCode System object, the output structure has these fields, consisting of state information about the GPS P-code generator.

      FieldValueDescription
      TotalNumChipsElapsedpositive integerTotal number of P-code chips that elapsed from the beginning of the week, returned as a positive integer. The beginning of a week is marked at midnight Saturday night - Sunday morning.
      TotalSecondsElapsedreal-valued scalarTotal seconds elapsed from the beginning of the week, returned as a real-valued scalar.

    Introduced in R2021a