"Manifesto yekutanga mapurogiramu kubva kune zvine hukama" kana kuti ndakasvika sei panguva ino yehupenyu

Chinyorwa changu nhasi mifungo inonzwika kubva kumunhu akatora nzira yekuronga zvakangoita netsaona (zvisinei nemasikirwo).

Hongu, ndinonzwisisa kuti chiitiko changu chingori chiitiko changu, asi zvinoratidzika kwandiri kuti zvinopindirana mune yakajairika maitiro. Uyezve, chiitiko chinotsanangurwa pazasi chine chekuita zvakanyanya kumunda wesainzi chiitiko, asi izvo gehena risiri kutamba - rinogona kubatsira kunze.

"Manifesto yekutanga mapurogiramu kubva kune zvine hukama" kana kuti ndakasvika sei panguva ino yehupenyu
Source: https://xkcd.com/664/

Kazhinji, yakatsaurirwa kune vese vadzidzi vemazuva ano kubva kune aimbova mudzidzi!

Zvinotarisirwa

Pandakapedza dhigirii rangu reBachelor muInfocommunication Technologies neCommunication Systems muna 2014, hapana chandaiziva nezvenyika yehurongwa. Hongu, sevamwe vakawanda, ndakatora chidzidzo che“Computer Science” mugore rangu rokutanga – asi, Ishe, rakanga riri gore rangu rokutanga! Yave isingaperi!

Kazhinji, ndakanga ndisingatarisiri chero chinhu chakasiyana zvakanyanya kubva kudhigirii rebhaibheri, uye pandakapinda purogiramu yatenzi. "Kukurukurirana uye Signal Processing" German-Russian Institute of New Technologies.

Asi pasina...

Isu taingova chechipiri chekutora, uye vakomana vekutanga vaive vachiri kurongedza mabhegi avo kuenda kure kure Germany (iyo internship inotora mwedzi mitanhatu mugore rechipiri redhigirii ra master). Mune mamwe mazwi, hapana kubva kudenderedzwa repedyo akange asati asangana zvakakomba nzira dzedzidzo yeEurope, uye pakanga pasina wekubvunza nezve ruzivo.

Mugore redu rekutanga, takanga tine maitiro akasiyana siyana, umo taigara tichipihwa sarudzo pakati pekunyora zvinyorwa (kunyanya mumutauro weMATLAB) uye kushandisa maGUI akasiyana siyana (mupfungwa yekuti pasina kunyora zvinyorwa - simulation. modelling environments).

"Manifesto yekutanga mapurogiramu kubva kune zvine hukama" kana kuti ndakasvika sei panguva ino yehupenyu

Hazvina maturo kutaura, isu, Masters emangwana eSainzi, kubva muhupenzi hwedu hwehuduku, takadzivisa kunyora kodhi semoto. Heino, semuenzaniso, iSimulink kubva kuMathWorks: heano mabhuraki, heano makabatana, heano ese marudzi ezvirongwa uye switch.

Maonero ekuzvarwa uye anonzwisisika kune munhu akamboshanda mudhizaini dhizaini uye masisitimu engineering!

"Manifesto yekutanga mapurogiramu kubva kune zvine hukama" kana kuti ndakasvika sei panguva ino yehupenyu
Source: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Saka zvaiita kwatiri...

Chokwadi

Rimwe remabasa anoshanda esemester yekutanga kwaive kuvandudzwa kweiyo OFDM chiratidzo che transceiver sechikamu chechinyorwa "Nzira dzeModelling uye Optimization". Iyo pfungwa yakabudirira kwazvo: tekinoroji ichiri yakakosha uye yakakurumbira nekuda kwekushandiswa kwayo, semuenzaniso, muWi-Fi uye LTE/LTE-A network (mune fomu yeOFDMA). Ichi ndicho chinhu chakanakisa kuti masters vadzidzise hunyanzvi hwavo mukuenzanisira telecom masisitimu.

"Manifesto yekutanga mapurogiramu kubva kune zvine hukama" kana kuti ndakasvika sei panguva ino yehupenyu

Uye iko zvino takapihwa akati wandei sarudzo dzehunyanzvi hwekuita nezviri pachena zvisingaite maframe paramita (kuitira kuti tisatsvage mhinduro paInternet), uye tinorovera paSimulink yatotaurwa ... Uye tinorohwa mumusoro netii. chokwadi:

  • Chivharo chimwe nechimwe chizere nezvakawanda zvisingazivikanwe paramita, izvo zvinotyisa kuchinja pakudonha kweheti.
  • Iwo manipulations ane manhamba anofanirwa kuitwa, zvinoita kunge zviri nyore, asi iwe uchiri kufanira kukakavara, Mwari ngaasadaro.
  • Michina yeCathedral inononoka kudzika kubva mukushandiswa kwekusagadzikana kweGUI, kunyangwe padanho rekusefa kuburikidza nemaraibhurari ezvidhinha zviripo.
  • Kuti upedze chimwe chinhu kumba, unofanirwa kuva neSimulink yakafanana. Uye, chaizvoizvo, hapana dzimwe nzira.

Hongu, pakupedzisira isu, hongu, takapedza basa racho, asi takaripedza nemhepo huru yekuzorora.

Nguva yakati yapfuura, uye takasvika pakupera kwegore rokutanga redhigirii ra master. Nhamba yebasa rechikoro rinoshandisa maGUI rakatanga kuwira zvakaenzana nekuwedzera kwechikamu chezvidzidzo zveGermany, kunyange zvazvo yakanga isati yasvika padanho rekuchinja kweparadigm. Vazhinji vedu, kusanganisira ini, tichikunda kukura kwedu kwekuvaka, tichiwedzera kushandisa Matlab mumapurojekiti edu esainzi (zvisinei muchimiro cheToolboxes), uye kwete iyo inoita seinojairana Simulink.

Pfungwa yekusava nechokwadi kwedu yaiva mutsara wemumwe wevadzidzi vegore rechipiri (vakanga vadzokera kuRussia panguva iyoyo):

  • Kanganwa, ingangoita nguva yekudzidzira, nezveSimilink, MathCad uye imwe LabView - pamusoro pechikomo zvese zvakanyorwa muMATLAB, uchishandisa MatLab pachayo kana yemahara "vhezheni" Octave.

Chirevo chakazove chikamu chechokwadi: muIlmenau, gakava pamusoro pesarudzo yezvishandiso harina kunyatsogadziriswa. Chokwadi, sarudzo yaive yakawanda pakati peMATLAB, Python naC.

Pazuva rimwe chetero, ndakatorwa nekunakidzwa kwechisikigo: handifanire kuendesa chikamu changu cheiyo OFDM transmitter modhi mune yakanyorwa fomu? Kungonakidzwa chete.

Ndakabva ndatanga kushanda.

Mbichana mbichana

Panzvimbo pekuverenga dzidziso, ini ndinongopa chinongedzo kune izvi yakanaka chinyorwa 2011 kubva tgx uye pamasiraidhi LTE yemuviri layer mapurofesa Michel-Tila (TU Ilmenau). Ndinofunga kuti izvi zvichakwana.

"Saka," ndakafunga, "ngatidzokorore, tichazotevedzera chii?"
Tichatevedzera OFDM furemu jenareta (OFDM furemu jenareta).

Izvo zvichasanganisira:

  • zviratidzo zvemashoko
  • mutyairi zviratidzo
  • zero (DC)

Chii (nekuda kwekureruka) isu tinotora kubva:

  • kubva pakuenzanisa cyclic prefix (kana iwe uchiziva izvo zvekutanga, kuwedzera hazvizonetsa)

"Manifesto yekutanga mapurogiramu kubva kune zvine hukama" kana kuti ndakasvika sei panguva ino yehupenyu

Block diagram yemuenzaniso uri kutariswa. Isu tichamira pane inverse FFT (IFFT) block. Kuti apedze mufananidzo, munhu wese anogona kuenderera mberi ivo pachavo - ndakavimbisa vadzidzisi kubva kudhipatimendi kuti vasiye chimwe chinhu kuvadzidzi.

Ngatitsanangure isu pachedu. kurovedza muviri:

  • nhamba yakatarwa ye-sub-carriers;
  • yakatarwa furemu kureba;
  • tinofanira kuwedzera zero imwe pakati uye peya zero pakutanga uye pakupera furemu (zvizere, 5 zvidimbu);
  • zviratidzo zveruzivo zvinogadziridzwa uchishandisa M-PSK kana M-QAM, uko M ndiyo modulation odha.

Ngatitange nekodhi.

Iyo yese script inogona kutorwa kubva batanidzo.

Ngatitsanangurirei mapeji ekupinza:

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

Zvino isu tinoona ma indices ezviratidzo zveruzivo, tichibvuma fungidziro yekuti masaini emutyairi anofanira kuenda pamberi uye/kana mushure mazero:

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

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

Ipapo zvinzvimbo zvinogona kutsanangurwa uchishandisa basa linspace, kudzikisa kukosha kusvika kudiki pane nhamba dzepedyo dziri pedyo:

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

Ngatiwedzerei ma indexes e zero kune izvi uye rongedza:

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

Saizvozvo, iyo pilot chiratidzo indices zvimwe zvese:

%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); 

Zvino ngatinzwisise masaini ekutyaira.

Tine template (variable vatyairi), uye ngatiti tinoda vatyairi vendege kubva kutemplate iyi kuti vaiswe mufuremu yedu zvakatevedzana. Zvechokwadi, izvi zvinogona kuitwa muchiuno. Kana kuti iwe unogona kutamba zvishoma zvinyengeri nematrices - nerombo rakanaka MATLAB inokutendera kuti uite izvi nekunyaradza kwakakwana.

Kutanga, ngationei kuti mangani ematemplate aya anokwana zvizere mufuremu:

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

Tevere, isu tinogadzira vector ine matemplate edu:

% 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

Uye isu tinotsanangura diki diki rine chete chidimbu chetemplate - iyo "muswe", iyo isingakwane zvachose mufuremu:

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

Tinowana mavara ekufambisa ndege:

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

Ngatienderere mberi kune zviratidzo zveruzivo, kureva, isu tichagadzira meseji uye toigadzirisa:

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 

Zvese zvagadzirira! Kubatanidza frame:

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

Iwe unofanirwa kuwana chimwe chinhu chakadai:

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

"Bliss!" - Ndakafunga kugutsikana ndokuvhara laptop. Zvakanditorera maawa mashoma kuita zvese: kusanganisira kunyora kodhi, kudzidza mamwe mabasa eMatlab uye kufunga kuburikidza nemasvomhu.

Ndedzipi mhedziso dzandakawana ipapo?

Kuzviisa pasi:

  • Kodhi yekunyora inonakidza uye yakafanana nenhetembo!
  • Scripting ndiyo yakanyanya nyore nzira yekutsvagisa yendima yeKukurukurirana uye Signal Processing.

Chinangwa:

  • Iko hakuna chikonzero chekupfura shiri duku kubva kune cannon (kunze kwekunge chinangwa chekudzidzisa chakadaro, chokwadi, chakakosha): tichishandisa Simulink, takatora kugadzirisa dambudziko riri nyore nemudziyo wakaoma.
  • GUI yakanaka, asi kunzwisisa izvo zviri "pasi pehodhi" zviri nani.

Uye zvino, ndiri kure nekuve mudzidzi, ndinoda kutaura zvinotevera kumubatanidzwa wevadzidzi:

  • Zvitore!

Edza kunyora kodhi, kunyangwe yakashata pakutanga. Nekuronga, sezvimwe chero chiitiko, chikamu chakaomesesa ndiko kutanga. Uye zviri nani kutanga kare: kana iwe uri musayendisiti kana kunyange techie, nokukurumidza kana kuti gare gare iwe uchada unyanzvi uhwu.

  • Demand!

Danai nzira dzekufambira mberi uye maturusi kubva kuvadzidzisi nevatariri. Kana izvi zvichibvira, hongu...

  • Gadzira!

Ndekupi kumwe kuri nani kudarika maronda ose emutangi, kana kwete mukati megadziriro yepurogiramu yezvidzidzo? Gadzira uye gadzira hunyanzvi hwako - zvakare, nekukurumidza iwe paunotanga, zviri nani.

Vanoshuvira mapurogiramu kubva kunyika dzese, batana!

PS

Kuti ndinyore hukama hwangu hwakananga nevadzidzi, ndiri kubatanidza mufananidzo usingakanganwiki we2017 nemarector maviri: Peter Scharff (kurudyi) naAlbert Kharisovich Gilmutdinov (kuruboshwe).

"Manifesto yekutanga mapurogiramu kubva kune zvine hukama" kana kuti ndakasvika sei panguva ino yehupenyu

Zvakanga zvakakodzera kupedzisa purogiramu zvishoma zvezvipfeko izvi! (nhambe)

Source: www.habr.com

Voeg