Канальное кодирование - пропускная способность


Полная функциональность сценария:

  • Создает число, кратное 4, из интервала 0-1000 в цикле до тех пор, пока оно не выполнит условие делимости по модулю.
  • Символ конгруэнции с 0 должен применяться после целочисленного деления на 4. Поскольку система состоит из x * 4 битов, которые будут изменены - дополнены битами с логикой, примененной к 4 битам.
  • Генерируется случайная битовая последовательность с 0-1 значениями числа, которое мы впервые сгенерировали.
  • Преобразуйте матрицу в четыре бита в столбцы, используя изменение формы
  • Добавление защитных битов для 3 случаев:
  • первый - Бит безопасности на четыре бита
  • второй - Бит безопасности до и после четырех битов
  • третий - Бит безопасности до, между и за четырьмя битами
  • Составьте график и рассчитайте полосу пропускания при определенном значении SNR в единицах дБ.
  • SNR
  • дБ преобразуется в ватты и применяется для расчета полосы пропускания. Пропускная способность канала определяется количеством битов. Сценарий считается с 1-секундным временем передачи.
  • Наконец, строится график зависимости ширины полосы пропускания от пропускной способности канала.
  • 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')