"I-Manifesto yokuqalisa abadwelisi benkqubo abavela kwiingcali ezinxulumene" okanye ukuba ndifike njani kweli nqanaba ebomini

Inqaku lam namhlanje licinga ngokuvakalayo kumntu othathe indlela yeprogram phantse ngengozi (nangona ngokwemvelo).

Ewe, ndiyaqonda ukuba amava am ngamava am nje, kodwa kubonakala kum ukuba ingena kakuhle kwindlela eqhelekileyo. Ngaphezu koko, amava achazwe apha ngezantsi anxulumene ngakumbi kwintsimi yomsebenzi wesayensi, kodwa yintoni isihogo engenzi-inokuba luncedo ngaphandle.

"I-Manifesto yokuqalisa abadwelisi benkqubo abavela kwiingcali ezinxulumene" okanye ukuba ndifike njani kweli nqanaba ebomini
umthombo: https://xkcd.com/664/

Ngokubanzi, uzinikele kubo bonke abafundi bangoku ukusuka kumfundi wangaphambili!

Okulindelweyo

Xa ndigqibile isidanga sam se-bachelor kwi-Infocommunication Technologies kunye neeNkqubo zoNxibelelwano ngo-2014, ndandingazi nto malunga nehlabathi leprogram. Ewe, njengabanye abaninzi, ndasithatha isifundo “seNzululwazi yeKhompyutha” kunyaka wam wokuqala - kodwa, Nkosi, kwakunyaka wam wokuqala! Ibingunaphakade!

Ngokubanzi, andizange ndilindele nantoni na eyahlukileyo ngokukodwa kwisidanga se-bachelor, kwaye xa ndingena kwinkqubo yenkosi "UNxibelelwano kunye noLungiselelo lweMiqondiso" I-German-Russian Institute of New Technologies.

Kodwa ngelize...

Sasiba ngabafundi besibini kuphela, kwaye abafana bokuqala babesapakisha iingxowa zabo ukuya eJamani ekude (i-internship ithatha iinyanga ezintandathu kunyaka wesibini we-master's degree). Ngamanye amazwi, akukho mntu usuka kwisangqa esisondeleyo wayejongene nzulu neendlela zemfundo yaseYurophu, kwaye kwakungekho mntu unokubuza malunga neenkcukacha.

Kunyaka wethu wokuqala, ewe, besineendlela ezahlukeneyo zokuziqhelanisa, apho sasidla ngokunikwa ukhetho ngokwedemokhrasi phakathi kokubhalwa kweskripthi (ikakhulukazi ngolwimi lweMATLAB) kunye nokusebenzisa ii-GUIs ezikhethekileyo (ngengqiqo yokuba ngaphandle kokubhala imibhalo - ukulinganisa. imodeling environments).

"I-Manifesto yokuqalisa abadwelisi benkqubo abavela kwiingcali ezinxulumene" okanye ukuba ndifike njani kweli nqanaba ebomini

Ngokungathandabuzekiyo, thina, iiMasters zeSayensi zexesha elizayo, ngenxa yobudenge bethu bobutsha, sakuphepha ukubhala ikhowudi njengomlilo. Nantsi apha, umzekelo, iSimulink esuka kwiMathWorks: Nazi iibhloko, nantsi imidibaniso, nantsi zonke iintlobo zezicwangciso kunye nokutshintsha.

Umbono wendalo kwaye uyaqondakala kumntu osebenze ngaphambili kuyilo lwesekethe kunye nobunjineli beenkqubo!

"I-Manifesto yokuqalisa abadwelisi benkqubo abavela kwiingcali ezinxulumene" okanye ukuba ndifike njani kweli nqanaba ebomini
umthombo: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Ngoko kwabonakala ngathi...

Yinyaniso

Omnye wemisebenzi eyenziwayo yesiqingatha sonyaka yayikukuphuhliswa kwesixhobo sokudlulisa umqondiso we-OFDM njengenxalenye yomxholo othi “Iindlela zokuSebenza nokuPhuhlisa”. Umbono uphumelele kakhulu: itekhnoloji isasebenza kwaye ithandwa kakhulu ngenxa yokusetyenziswa kwayo, umzekelo, kwinethiwekhi ye-Wi-Fi kunye ne-LTE/LTE-A (ngendlela ye-OFDMA). Le yeyona nto ilungileyo yokuba iinkosi ziziqhelanise nezakhono zazo kwimodeli yeenkqubo ze-telecom.

"I-Manifesto yokuqalisa abadwelisi benkqubo abavela kwiingcali ezinxulumene" okanye ukuba ndifike njani kweli nqanaba ebomini

Kwaye ngoku sinikwa iinketho ezininzi zeenkcukacha zobugcisa kunye neeparameters zesakhelo ngokucacileyo ezingenakwenzeka (ukuze singakhangeli isisombululo kwi-Intanethi), kwaye sitsiba kwiSimulink esele ikhankanyiwe... Kwaye sibethelwa entloko nge teapot. eyenyani:

  • Ibhloko nganye igcwele iiparitha ezininzi ezingaziwayo, ezoyikisayo ukutshintsha kwi-drop of a hat.
  • I-manipulations enamanani kufuneka yenziwe, kubonakala ngathi ilula, kodwa kusafuneka uxabane, makangavumeli.
  • Oomatshini beCathedral bayacotha ngokubonakalayo ekusetyenzisweni ngamandla kwe-GUI, nakwinqanaba lokusefa kumathala eencwadi eebhloko ezikhoyo.
  • Ukugqiba into ekhaya, kufuneka ube neSimulink efanayo. Kwaye, enyanisweni, akukho ezinye iindlela.

Ewe, ekugqibeleni thina, ewe, siyigqibile iprojekthi, kodwa sayigqiba ngokuphefumlela phezulu.

Lahamba ixesha, saza safika ekupheleni konyaka wokuqala wesidanga senkosi. Ubungakanani bomsebenzi wesikolo owenzelwa ekhaya usebenzisa i-GUIs waqala ukuwa ngokulinganayo kunye nokunyuka kwenani lezifundo zaseJamani, nangona kwakungekafiki kwinqanaba le-paradigm shift. Uninzi lwethu, kubandakanywa nam, soyisa ubukhulu bethu obubonakalayo bokwakha, ngakumbi nangakumbi ukusebenzisa iMatlab kwiiprojekthi zethu zenzululwazi (nangona ikwimo yeebhokisi zezixhobo), hayi iSimulink ebonakala iqhelekile.

Ingongoma kumathandabuzo ethu yayilibinzana lomnye wabafundi abakunyaka wesibini (ababesandul’ ukubuyela eRashiya ngelo xesha):

  • Libala, ubuncinci ngexesha loqeqesho, malunga neSimilink, iMathCad kunye nenye iLabView - phezu kwenduli yonke into ibhalwe kwiMATLAB, kusetyenziswa iMatLab ngokwayo okanye "inguqulelo" yayo yasimahla yeOctave.

Ingxelo yajika yaba yinyani: e-Ilmenau, ingxabano malunga nokukhethwa kwezixhobo ayizange isombululwe ngokupheleleyo. Yinyani, ukhetho lwaluphakathi kweMATLAB, Python kunye neC.

Kwangolo suku lunye, ndathatyathwa yimincili yendalo: akufanelanga ukuba nditshintshe inxalenye yam yemodeli yokuhambisa i-OFDM kwifomu ebhaliweyo? Nje ukonwabela.

Ndaye ndasebenza.

Inyathelo nenyathelo

Endaweni yokubala kwethiyori, ndiza kunika ikhonkco kule nto inqaku elihle kakhulu 2011 ukusuka tgx nakwizilayidi Umaleko womzimba we-LTE Unjingalwazi UMichel-Tila (TU Ilmenau). Ndicinga ukuba oku kuya kwanela.

“Ke,” ndacinga, “makhe siphinde, siza kumisela ntoni?”
Siza kwenza imodeli OFDM isakhelo generator (OFDM isakhelo generator).

Yintoni eya kubandakanya:

  • iisimboli zolwazi
  • iimpawu zomqhubi
  • ooziro (DC)

Yintoni (ngenxa yokulula) esithatha kuyo:

  • ukusuka kumzekelo we-cyclic prefix (ukuba uyazazi iziseko, ukudibanisa akuyi kuba nzima)

"I-Manifesto yokuqalisa abadwelisi benkqubo abavela kwiingcali ezinxulumene" okanye ukuba ndifike njani kweli nqanaba ebomini

Umzobo webhloko wemodeli eqwalaselwayo. Siza kumisa kwibhloko yeFFT (IFFT) eguqukileyo. Ukugqibezela lo mfanekiso, wonke umntu angaqhubeka nokuphumla ngokwakhe - ndithembise ootitshala besebe ukuba bashiyele abafundi into.

Masizichaze ngokwethu ezo. umthambo:

  • inani elimiselweyo labathwali abancinci;
  • ubude besakhelo esisisigxina;
  • kufuneka songeze i-zero enye embindini kunye neeperi zero ekuqaleni nasekupheleni kwesakhelo (iitotali, iziqwenga ezi-5);
  • iisimboli zolwazi zimodareyithwa kusetyenziswa i-M-PSK okanye i-M-QAM, apho uM ilulandelelwano lokumodareyitha.

Masiqale ngekhowudi.

Iscript sonke sinokukhutshelwa kwi unxibelelwano.

Masichaze iiparamitha zongeniso:

clear all; close all; clc

M = 4; % e.g. QPSK 
N_inf = 16; % number of subcarriers (information symbols, actually) in the frame
fr_len = 32; % the length of our OFDM frame
N_pil = fr_len - N_inf - 5; % number of pilots in the frame
pilots = [1; j; -1; -j]; % pilots (QPSK, in fact)

nulls_idx = [1, 2, fr_len/2, fr_len-1, fr_len]; % indexes of nulls

Ngoku simisela izalathisi zeesimboli zolwazi, samkela isiseko sokuba imiqondiso yokulinga kufuneka ihambe phambi kunye/okanye emva kooziro:

idx_1_start = 4;
idx_1_end = fr_len/2 - 2;

idx_2_start = fr_len/2 + 2;
idx_2_end =  fr_len - 3;

Emva koko izikhundla zinokumiselwa ngokusebenzisa umsebenzi indawo yokulala, ukunciphisa amaxabiso ukuya kwezona manani zincinci zikufutshane:

inf_idx_1 = (floor(linspace(idx_1_start, idx_1_end, N_inf/2))).'; 
inf_idx_2 = (floor(linspace(idx_2_start, idx_2_end, N_inf/2))).';

inf_ind = [inf_idx_1; inf_idx_2]; % simple concatenation

Masidibanise izalathisi zooziro kule nto kwaye siyihlele:

%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx); 

Ngokufanelekileyo, izalathi zesignali yokulinga yiyo yonke enye into:

%numbers in range from 1 to frame length 
% that don't overlape with inf_and_nulls_idx vector
pilot_idx = setdiff(1:fr_len, inf_and_nulls_idx); 

Ngoku masiqonde imiqondiso yokulinga.

Sine template (eguquguqukayo baqhubi), kwaye masithi sifuna abaqhubi beenqwelo moya kule template bafakwe kwisakhelo sethu ngokulandelelanayo. Ewe, oku kunokwenziwa kwilophu. Okanye ungadlala inkohliso encinci ngematriki - ngethamsanqa iMATLAB ikuvumela ukuba wenze oku ngokukhululeka okwaneleyo.

Okokuqala, makhe sijonge ukuba zingaphi kwezi templates zingena ngokupheleleyo kwisakhelo:

pilots_len_psudo = floor(N_pil/length(pilots));

Okulandelayo, senza i-vector equkethe iitemplates zethu:

% linear algebra tricks:
mat_1 = pilots*ones(1, pilots_len_psudo); % rank-one matrix
resh = reshape(mat_1, pilots_len_psudo*length(pilots),1); % vectorization

Kwaye sichaza i-vector encinci equlethe kuphela isiqwenga setemplate - "umsila", ongangeni ngokupheleleyo kwisakhelo:

tail_len = fr_len  - N_inf - length(nulls_idx) ...
                - length(pilots)*pilots_len_psudo; 
tail = pilots(1:tail_len); % "tail" of pilots vector

Sifumana abalinganiswa abalingwayo:

vec_pilots = [resh; tail]; % completed pilots vector that frame consists

Masiqhubele phambili kwiisimboli zolwazi, ezizezi, siya kwenza umyalezo kwaye siwulungise:

message = randi([0 M-1], N_inf, 1); % decimal information symbols

if M >= 16
    info_symbols = qammod(message, M, pi/4);
else
    info_symbols = pskmod(message, M, pi/4);
end 

Zonke zilungile! Ukudibanisa isakhelo:

%% Frame construction
frame = zeros(fr_len,1);
frame(pilot_idx) = vec_pilots;
frame(inf_ind) = info_symbols

Kuya kufuneka ufumane into efana nale:

frame =

   0.00000 + 0.00000i
   0.00000 + 0.00000i
   1.00000 + 0.00000i
  -0.70711 - 0.70711i
  -0.70711 - 0.70711i
   0.70711 + 0.70711i
   0.00000 + 1.00000i
  -0.70711 + 0.70711i
  -0.70711 + 0.70711i
  -1.00000 + 0.00000i
  -0.70711 + 0.70711i
  -0.70711 - 0.70711i
   0.00000 - 1.00000i
   0.70711 + 0.70711i
   1.00000 + 0.00000i
   0.00000 + 0.00000i
   0.00000 + 1.00000i
   0.70711 - 0.70711i
  -0.70711 + 0.70711i
  -1.00000 + 0.00000i
  -0.70711 + 0.70711i
   0.70711 + 0.70711i
   0.00000 - 1.00000i
  -0.70711 - 0.70711i
   0.70711 + 0.70711i
   1.00000 + 0.00000i
   0.70711 - 0.70711i
   0.00000 + 1.00000i
   0.70711 - 0.70711i
  -1.00000 + 0.00000i
   0.00000 + 0.00000i
   0.00000 + 0.00000i

"Luyolo!" — Ndacinga ndaneliseka ndaza ndayivala ilaptop. Kundithathe iiyure ezimbalwa ukwenza yonke into: kubandakanya ikhowudi yokubhala, ukufunda imisebenzi yeMatlab nokucinga ngokusebenzisa amaqhinga ezibalo.

Zeziphi izigqibo endafikelela kuzo ngoko?

Isihloko:

  • Ikhowudi yokubhala imnandi kwaye iyafana nesihobe!
  • I-Scripting yeyona ndlela ifanelekileyo yophando kwintsimi yoNxibelelwano kunye nokuPhathwa kweMiqondiso.

Injongo:

  • Akukho mfuneko yokudubula oongqatyana kwi-cannon (ngaphandle kokuba injongo yemfundo enjalo, ngokuqinisekileyo, ifanelekile): usebenzisa i-Simulink, sathatha ukusombulula ingxaki elula ngesixhobo esiyinkimbinkimbi.
  • I-GUI ilungile, kodwa ukuqonda okuqulethwe "phantsi kwe-hood" kungcono.

Kwaye ngoku, ekubeni ukude nokuba ngumfundi, ndifuna ukuthetha oku kulandelayo kubuzalwana babafundi:

  • Yenzele yona!

Zama ukubhala ikhowudi, nokuba imbi ekuqaleni. Ngokwenza inkqubo, njengawo nawuphi na omnye umsebenzi, eyona nto inzima sisiqalo. Kwaye kungcono ukuqala kwangaphambili: ukuba usosayensi okanye i-techie nje, ngokukhawuleza okanye kamva uya kufuna obu buchule.

  • Imfuno!

Funa iindlela eziqhubekayo kunye nezixhobo kootitshala nakwiisuphavayiza. Ukuba oku kuyenzeka, kunjalo...

  • Yenza!

Kuphi enye indawo engcono yokufumana zonke izilonda zomqali, ukuba akukho ngaphakathi kwesakhelo senkqubo yemfundo? Yenza kwaye uphucule izakhono zakho - kwakhona, ngokukhawuleza uqala, ngcono.

Abachwephesha benkqubo abavela kuwo onke amazwe, manyanani!

PS

Ukuze ndirekhode ubudlelwane bam obuthe ngqo nabafundi, ndidibanisa ifoto engalibalekiyo ye-2017 kunye neerectors ezimbini: uPeter Scharff (ngasekunene) kunye no-Albert Kharisovich Gilmutdinov (ngasekhohlo).

"I-Manifesto yokuqalisa abadwelisi benkqubo abavela kwiingcali ezinxulumene" okanye ukuba ndifike njani kweli nqanaba ebomini

Bekufanelekile ukugqiba inkqubo ubuncinane kwezi mpahla! (udlala)

umthombo: www.habr.com

Yongeza izimvo