Kanálové kódovanie - šírka pásma


Funkčnosť celého scriptu:

  • Vygeneruje sa číslo deliteľné 4-mi z intervalu 0-1000, v cykle, pokým nespĺňa podmienku delitelnosti prostredníctvom funkcie modulo.
  • Musí sa uplatniť znak kongruencie so zvyškom 0 po celočíselnom delení číslom 4. Nakoľko systém pozostáva z x*4 bitov, ktoré budú upravené - doplnené o zabezpečovacie bity s logikou uplatnenou na 4 bitoch.
  • Vygeneruje sa náhodná postupnosť bitov s hodnotami 0-1 o veľkosti čísla, ktoré sme prv generovali.
  • Pretvorenie matice na štvorice bitov do stĺpcov pomocou funkcie reshape
  • Pridanie zabezpečovacích bitov pre 3 prípady:
  • 1. - Zabezpečovací bit za štvoricu bitov
  • 2. - Zabezpečovací bit pred a za štvoricu bitov
  • 3. - Zabezpečovací bit pred, medzi a za štvoricu bitov
  • Vykreslenie a vypočítanie šírky pásma pri určitej hodnote SNR v dB jednotkách.
  • dB miera SNR je prevedená na Watty a uplatnená pri výpočte šírky pásma. Kapacita kanála je daná počtom bitov. Script ráta s časom prenosu 1 sekunda.
  • Na záver sa vykreslí graf závislosti šírky pásma od kapacity kanála
  • Script MATLAB:

    %%pred spustenim skriptu zavri okna a vymaž premenne
    close all;
    clear all;
    
    %%Vstupne premenne
    interval = 1000; %%interval
    delitelnost = 0; %%boolean premenna
    
    %%Pociatocna hodnota Signal/noise ratio - pomer
    SNR_dB = 10; % hodnota pre dB
    SNR_Watt = 10^(SNR_dB/10); %Hodnota pre WATT
    
    %%cyklus, boolean premennu nastav na 1
    while (delitelnost ~= 1)
        generovane_cislo = randi(interval);
        modulo = @(interval) rem(interval, [4]) == 0;
        delitelnost = modulo(generovane_cislo);
    end
    
    pole_znakov_random = randi([0 1],1,generovane_cislo);
    zabezpecovacibit_matica = 1*ones(1,generovane_cislo/4);
    povodne_bity_postupnosti = reshape(pole_znakov_random,4,generovane_cislo/4);
    
    %%MATICA SO ZABEZPECOVACIM BITOM ZA 4 BITMI
    A = reshape([povodne_bity_postupnosti; zabezpecovacibit_matica],1,(4+1)*generovane_cislo/4);
    %%MATICA SO ZABEZPECOVACIM BITOM NA ZACIATKU A KONCI 4-BITOVEJ POSTUPNOSTI
    B = reshape([zabezpecovacibit_matica; povodne_bity_postupnosti; zabezpecovacibit_matica],1,(4+2)*generovane_cislo/4);
    %%MATICA SO ZABEZPECOVACIM BITOM ZA KAZDYM BITOM POSTUPNOSTI
    C = reshape([zabezpecovacibit_matica; povodne_bity_postupnosti(1:2,:); zabezpecovacibit_matica; povodne_bity_postupnosti(3:end,:); zabezpecovacibit_matica],1,(4+3)*generovane_cislo/4);
    
    %%KAPACITA KANALA = POCET BITOV V MATICIACH
    pocetbitovA = numel(A);
    pocetbitovB = numel(B);
    pocetbitovC = numel(C);
    
    %%SIRKA PASMA, VZOREC ZO VZTAHU SO KAPACITY KANALA + SNR A LOGARITMICKYM VYJADRENIM 
    B1 = pocetbitovA/log2(1+SNR_Watt);
    B2 = pocetbitovB/log2(1+SNR_Watt);
    B3 = pocetbitovC/log2(1+SNR_Watt); 
    
    %%GRAF, ZAVISLOST KAPACITY A SIRKY PASMA
    figure('Name','Závislosť šírky pásma od kapacity kanála');
    bar(B1, pocetbitovA, 'm')
    hold on
    bar(B2, pocetbitovB, 'c')
    hold on
    bar(B3, pocetbitovC ,'y')
    hold on
    title('Závislosť šírky pásma od kapacity kanála')
    ylabel('Kapacita kanála (počet bitov)');
    xlabel('Šírka pásma (Hz)');
    legend('Prípad 1','Prípad 2','Prípad 3','location','north')