26
OSNOVA: a) Funkce v Matlabu b) Model komunikačního systému Jiří Šebesta Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 10

Přednáška 10 14.4.2014 Jiří Šebesta

  • Upload
    patch

  • View
    36

  • Download
    1

Embed Size (px)

DESCRIPTION

Počítače a programování 2. Přednáška 10 14.4.2014 Jiří Šebesta. TÉMA – Modelování v MATLAB u. Funkce v Matlabu Model komunikačního systému. Definice a použití funkcí v Matlabu je podobné jako v ANSI-C: function [out_1, out_2, …] = func _name (in _1, in_2, … ) - PowerPoint PPT Presentation

Citation preview

  • OSNOVA:Funkce v MatlabuModel komunikanho systmu

    Ji ebestastav radioelektroniky, FEKT VUT v BrnPotae a programovn 2 pro obor EST BPC2EPEDNKA 10

  • Funkce v Matlabu (1/5)Definice a pouit funkc v Matlabu je podobn jako v ANSI-C:

    function [out1, out2, ] = func_name(in1, in2, ) klov slovo function uvozuje definici funkce vstupnch parametr me bt nkolik (na rozdl od ANSI-C) a jsou uspodny ve vektoru (matici) func_name definuje jmno funkce, definice funkce mus bt uloena do souboru se jmnem func_name.m vstupn parametry jsou podobn jako v ANSI-C deklarovny v poad podle obsahu zvorky za func_name jmna promnnch funkc jsou platn jen bhem vykonvn funkc pokud nen vsledek ukldn do vektoru pi voln funkce, vrac se prvn parametr (do promnn ans)

  • Funkce v Matlabu (2/5)Pklad funkce pro stedn hodnotu a smrodatnou odchylku vektoru [mean, st_dev]=statistic(vect)function [mean,st_dev] = statistic(vect)n = length(vect);mean = sum(vect)/n;st_dev = sqrt(sum((vect-mean).^2)/n);Pklad: statistic.mVoln funkce statistic()>> statistic([1.3 1.5 1.8 2.1 1.3 1.4 1.6 1.5])ans = 1.562500000000000>> [m, s] = statistic([1.3 1.5 1.8 2.1 1.3 1.4 1.6 1.5])m = 1.562500000000000s = 0.254644359843292

  • Funkce v Matlabu (3/5)Pklad funkce pro tdn kladnch a zpornch sel [pos, neg]=posnegsort(vect)function [pos, neg] = posnegsort(vect)v = length(vect);p = 1;n = 1;pos = [];neg = [];for x = 1:v if vect(x) > 0 pos(p) = vect(x); p = p + 1; elseif vect(x) < 0 neg(n) = vect(x); n = n + 1; endend

  • Funkce v Matlabu (4/5)Pklad: posnegsort.mVoln funkce posnegsort()>> [P, N] = posnegsort(-5:5)P = 1 2 3 4 5N = -5 -4 -3 -2 -1

    >> [P, N] = posnegsort([1 7 6 3])P = 1 7 6 3N = []Aby funkce nehavarovala v ppad, e se vstupn vektor nenapln (viz pedchoz pklad voln), je nutn inicializovat vstupy jako przdn vektory!!!

  • Funkce v Matlabu (5/5)Pklad funkce pro normovn matice k maximu m_out = norm_mat(m_in)function m_out = norm_mat(m_in)maximum = max(max(m_in));m_out = m_in/maximum;Pklad: norm_mat.mVoln funkce norm_mat()>> a = [1:5; 3:2:11; 4:8]a = 1 2 3 4 5 3 5 7 9 11 4 5 6 7 8>> b = norm_mat(a)b = 0.0909 0.1818 0.2727 0.3636 0.4545 0.2727 0.4545 0.6364 0.8182 1.0000 0.3636 0.4545 0.5455 0.6364 0.7273

  • Model komunikanho systmu (1/19)Pklad: Sestavte model komunikanho systmu, kter bude penet bitmapov obrzky pomoc modulace 16-QAM s Grayovm kdovnm. Pro obrzky vytvote rovn algoritmus zdrojovho kdovn, kter omez jednotliv barevn sloky na 4 nejvznamnj bity. Pi penosu signlu uvaujte pouze aditivn um s definovanou vkonovou rovn. Obecn model komunikanho systmu

  • Model komunikanho systmu (2/19)Model komunikanho systmu bude tedy zjednoduen. Prvn operac je zdrojov kodr, kter komprimuje originln obrzek tak, aby komprimovan obrzek ml men objem dat (uetme penze za krat pronjem penosovho kanlu) a na druhou stranu, aby komprese pli neznehodnotila pvodn kvalitu obrzku. Pouijeme velmi jednoduchou kompresi, kdy odstranme nejni 4 bity kad barevn sloky RGB obrzku (pvodn ka dat pro kadou barevnou sloku u BMP obrzku je 8 bit). Kompresn pomr tedy bude 2:1 (budeme mt jen polovinu bit).V reln praxi se pouvaj mnohem innj komprese pro obrzky (nap. JPEG), algoritmus je vak podstatn sloitj ne jen bitov oezn.

  • Model komunikanho systmu (3/19)Naten BMP obrzku a rozloen na jednotliv barevn sloky RGB, kad reprezentuje matici rovn dan barvy pro jednotliv pixely obrzkuRGB = imread('Lady.bmp', 'BMP'); % naten BMP obr. do RGBR = double(RGB(:,:,1)); % matice erven G = double(RGB(:,:,2)); % matice zelenB = double(RGB(:,:,3)); % matice modrKomprese oeznm barevnch sloek na 4 nejvznamnj bityCF = 4; % poet oezanch bitsize(R) % zskme rozmr obrzku RC = floor(R/(2^CF)); % oezn provedeme dlenm 2^CF aGC = floor(G/(2^CF)); % odstrannm desetinn stiBC = floor(B/(2^CF)); % pomoc funkce floor() % RC, GC a BC jsou matice komprimovanch sloek RGB % jejich prvky jsou v rozsahu 0-15 (jen 16 rovn msto% pvodnch 256 u originlnho obrzku)

  • Model komunikanho systmu (4/9)Uloen komprimovanho BMP obrzku pro kontrolu kvality (slo-en t 2D matic pro barevn sloky do spolen 3D matice pomoc funkce cat() vrstvy do hloubky odpovdaj barevnm slokm, hodnoty rovn barev se mus nejprve posunout nsobenm 2CF na nejvznamnj bity a konvertovat na uint8RGBC = cat(3, uint8(RC*CF), uint8(GC*CF), uint8(BC*CF));imwrite(RGBC,'LadyC.bmp','BMP') % uloen BMP obrzkuOriginlUvaovan komprese CF=4CF=5

  • Model komunikanho systmu (5/19)Dalm krokem je modulace. Pro jednoduchost je pouita 16-QAM, kdy kad 4 bity naeho obrzku jsou namapovny podle modulanho schmatu na obrzku: Principiln kad bod ve schmatu definuje symbol, kter se po urit asov sek pen penosovm prostednm (rdiem nebo kabelem z vyslae na pijma). U rdiovho sinusovho signlu se podle sym-bol mn amplituda (vzdlenost od stedu v modulanm schmatu) a poten fze (hel x-ov osy a spojnici stedu k symbolu) u(t) = Asin(2ft + ). Amplitudu a fzi lze tak vyjdit v komplexn rovin relnou slokou I a imaginrn slokou Q (skuten v modultoru vedou dva drty I a Q).

  • Model komunikanho systmu (6/19)Funkce pro modulaci (mapovn symbol do 16-QAM diagramu)function sig = QAM16mapping(in) %in je matice[mr, mc] = size(in); %rozmry maticefor r=1:mr %dva vnoen cykly pro kad dek for c=1:mc % a sloupec switch in(r,c) % podle hodnoty na danm pixelu case {0, 1, 3, 2} % se mapuje hodnota pro sigI(r,c)=-3; % I sloku vst. signlu case {4, 5, 7, 6} sigI(r,c)=-1; case {12, 13, 15, 14} sigI(r,c)=1; case {8, 9, 11, 10} sigI(r,c)=3; end endend

  • Model komunikanho systmu (7/19)Funkce pro modulaci - pokraovn pro Q sloku a vytvoen celho komplexnho signlufor r=1:mr for c=1:mc switch in(r,c) case {0, 4, 12, 8} sigQ(r,c)=-3; case {1, 5, 13, 9} sigQ(r,c)=-1; case {3, 7, 15, 11} sigQ(r,c)=1; case {2, 6, 14, 10} sigQ(r,c)=3; end endendsig = sigI+i*sigQ;

  • Model komunikanho systmu (8/19)Voln mapovac funkce (modulace 16-QAM) pro jednotliv matice komprimovanch barevnch sloek a ukzka modulovanho signlu v I/Q rovin pro ervenou slokuRS = QAM16mapping(RC);GS = QAM16mapping(GC);BS = QAM16mapping(BC);

    figure(1)plot(RS,'b*')grid onxlim ([-4 4])ylim ([-4 4])xlabel('I')ylabel('Q')

  • Model komunikanho systmu (9/19)Dalm krokem je penos signlu komunikanm prostedm. To lze v nejjednodum ppad modelovat aditivnm umem pidanm k signlu, kter m Gaussovo normln rozdlen a to jak v I tak v Q rovin (toto zjednoduen lze udlat pro kanl typu kabel nebo pm viditelnost mezi rdiovm vyslaem a pijmaem). rove umu pak definujeme nsobc konstantou noiselev noiselev = 1.5; % rove umunoise = noiselev*randn(mr,mc)+i*noiselev*randn(mr,mc);%aditivn um m charakter komplexnho nhodnho signlu %s normlnm rozdlen RSN = RS+noise; %pidn umu k ervenmu signlu noise = noiselev*randn(mr,mc)+i*noiselev*randn(mr,mc);GSN = GS+noise; %pidn umu k zelenmu signlu noise = noiselev*randn(mr,mc)+i*noiselev*randn(mr,mc);BSN = BS+noise; %pidn umu k modrmu signlu

  • Model komunika. systmu (10/19)Z hlediska modelu je jedno, kter barva bude penena dv, protoe um psob stejn na vechny sti uitenho signlu (v ase se jeho prmrn vkon nemn).% pro ervenoufigure(2)plot(RSN,'b.')grid onxlim ([-4 4])ylim ([-4 4])xlabel('I')ylabel('Q')

    Zobrazen zaumnho signlu pro noiselev = 0.35Takto zaumn signl je na vstupu demodultoru

  • Model komunika. systmu (11/19)Poslednm krokem je proces demodulace pijatho zaumnho signlu. Je to proces opan k modulaci. Pro dan pijat vzorek signlu je nutno zptn piadit kombinaci 4 bit podle modulanho schmatu. Je proto teba stanovit rozhodovac rovn pro I a Q sloku signlu (erven hranice v obrzku) a sestavit pslun rozhodovac algoritmus.

  • Model komunika. systmu (12/19)Funkce rozhodovacho algoritmu demodultoru pro 16-QAMfunction data = QAM16demapping(sig)[mr, mc] = size(sig);for r=1:mr for c=1:mc if real(sig(r,c)) < -2 dr = -3; elseif real(sig(r,c)) < 0 dr = -1; elseif real(sig(r,c)) < 2 dr = 1; else dr = 3; end if imag(sig(r,c)) < -2 di = -3; elseif imag(sig(r,c)) < 0 di = -1; elseif imag(sig(r,c)) < 2 di = 1; else di = 3; end

  • Model komunika. systmu (13/19)Pokraovn funkce rozhodovacho algoritmu pro 16-QAM if dr == -3 if di == -3 data(r,c) = 0; elseif di == -1 data(r,c) = 1; elseif di == 1 data(r,c) = 3; else data(r,c) = 2; end elseif dr == -1 if di == -3 data(r,c) = 4; elseif di == -1 data(r,c) = 5; elseif di == 1 data(r,c) = 7; else data(r,c) = 6; end end endend

  • Model komunika. systmu (14/19)Voln funkce rozhodovacho algoritmu pro 16-QAM a zptn rekonstrukce BMP obrzku a jeho uloenRD = QAM16demapping(RSN);GD = QAM16demapping(GSN);BD = QAM16demapping(BSN);RGBD=cat(3,uint8(RD*2^CF),uint8(GD*2^CF),uint8(BD*2^CF));imwrite(RGBD,'LadyD.bmp','BMP')V relnm komunikanm systmu je ve komplikovanj, na stran vysln se mus sestavit vhodn rmec dat, oznait hlavi-kami (aby se vdlo, kde vlastn symboly pro obrzek zanaj. Na stran pijmae pak mus bt zajitna synchronizace nosn frekvence a fze, asovho intervalu symbolu a rmce (opt od jakch dat se mus skldat vsledn obrzek). Tento jednoduch model vak umouje zkladn ohodnocen komunikanho kanlu pi dan rovni umu.

  • Model komunika. systmu (15/19)Pklady vsledk pro penesen obrzek pro rzn rovn umunoiselev = 0.20

  • Model komunika. systmu (16/19)Pklady vsledk pro penesen obrzek pro rzn rovn umunoiselev = 0.30

  • Model komunika. systmu (17/19)Pklady vsledk pro penesen obrzek pro rzn rovn umunoiselev = 0.40

  • Model komunikanho systmu (18/19)Pklady vsledk pro penesen obrzek pro rzn rovn umunoiselev = 0.50

  • Model komunika. systmu (19/19)Pklady vsledk pro penesen obrzek pro rzn rovn umunoiselev = 0.60Pklad: BPC2E_Ex144.m + QAM16mapping.m + QAM16demapping.m

  • Tma nsledujc pednky Grafick uivatelsk rozhranDKUJI ZA POZORNOST

    *************************