ProHoster > Blogs > interneta ziÅas > āManifests iesÄcÄjiem programmÄtÄjiem no radniecÄ«gÄm specialitÄtÄmā jeb kÄ es nonÄcu lÄ«dz Å”im dzÄ«ves punktam
āManifests iesÄcÄjiem programmÄtÄjiem no radniecÄ«gÄm specialitÄtÄmā jeb kÄ es nonÄcu lÄ«dz Å”im dzÄ«ves punktam
Mans raksts Å”odien ir skaļas domas no cilvÄka, kurÅ” gandrÄ«z nejauÅ”i (kaut arÄ« dabiski) izvÄlÄjÄs programmÄÅ”anas ceļu.
JÄ, es saprotu, ka mana pieredze ir tikai mana pieredze, bet man Ŕķiet, ka tÄ labi iekļaujas kopÄjÄ tendencÄ. TurklÄt tÄlÄk aprakstÄ«tÄ pieredze vairÄk saistÄs ar zinÄtniskÄs darbÄ«bas jomu, bet, kas pie velna nav joks ā tÄ var noderÄt ÄrpusÄ.
KopumÄ veltÄ«ts visiem esoÅ”ajiem studentiem no bijuÅ”Ä studenta!
Cerības
Kad 2014. gadÄ pabeidzu bakalaura grÄdu infokomunikÄciju tehnoloÄ£ijÄs un sakaru sistÄmÄs, es gandrÄ«z neko nezinÄju par programmÄÅ”anas pasauli. JÄ, tÄpat kÄ daudzi citi, es mÄcÄ«jos āDatorzinÄtnesā savÄ pirmajÄ kursÄ, bet, Kungs, tas bija manÄ pirmajÄ kursÄ! Ir pagÄjusi vesela mūžība!
VispÄr neko Ä«paÅ”i atŔķirÄ«gu no bakalaura negaidÄ«ju un stÄjoties maÄ£istrantÅ«rÄ "Sakari un signÄlu apstrÄde" VÄcijas-Krievijas Jauno tehnoloÄ£iju institÅ«ts.
Bet velti...
MÄs bijÄm tikai otrÄ uzÅemÅ”ana, un puiÅ”i no pirmÄs vÄl kravÄja somas uz tÄlo VÄciju (maÄ£istra otrajÄ kursÄ prakse ilgst seÅ”us mÄneÅ”us). Citiem vÄrdiem sakot, neviens no tuvÄkÄs vides vÄl nebija nopietni saskÄries ar Eiropas izglÄ«tÄ«bas metodÄm, un nebija neviena, kas pajautÄtu par detaļÄm.
PirmajÄ kursÄ, protams, mums bija dažÄda veida prakses, kurÄs mums parasti demokrÄtiski tika piedÄvÄta izvÄle starp skriptu rakstÄ«Å”anu (galvenokÄrt MATLAB valodÄ) un dažÄdu augsti specializÄtu GUI izmantoÅ”anu (tÄdÄ ziÅÄ, ka bez skriptu rakstÄ«Å”anas - simulÄcija modelÄÅ”anas vides).
Lieki piebilst, ka mÄs, topoÅ”ie zinÄtÅu maÄ£istri, sava jaunÄ«bas stulbuma dÄļ izvairÄ«jÄmies no koda rakstÄ«Å”anas kÄ uguns. Å eit, piemÄram, ir Simulink no MathWorks: Å”eit ir bloki, Å”eit ir savienojumi, Å”eit ir visÄdi iestatÄ«jumi un slÄdži.
Skats, kas ir iedzimts un saprotams cilvÄkam, kurÅ” iepriekÅ” strÄdÄjis Ä·Äžu projektÄÅ”anÄ un sistÄmu inženierijÄ!
Viens no pirmÄ semestra praktiskiem darbiem bija OFDM signÄlu raiduztvÄrÄja izstrÄde priekÅ”meta āModelÄÅ”anas un optimizÄcijas metodesā ietvaros. Ideja ir ļoti veiksmÄ«ga: tehnoloÄ£ija joprojÄm ir aktuÄla un diezgan populÄra tÄs izmantoÅ”anas dÄļ, piemÄram, Wi-Fi un LTE/LTE-A tÄ«klos (OFDMA formÄ). Tas ir labÄkais, ko meistari var praktizÄt savas prasmes telekomunikÄciju sistÄmu modelÄÅ”anÄ.
Un tagad mums tiek doti vairÄki tehnisko specifikÄciju varianti ar acÄ«mredzami nepraktiskiem rÄmja parametriem (lai nemeklÄtu risinÄjumu internetÄ), un mÄs uzbrÅ«kam jau pieminÄtajam Simulink... Un dabÅ«jam pa galvu ar tÄjkannu. no realitÄtes:
Katrs bloks ir pilns ar daudziem nezinÄmiem parametriem, kurus ir biedÄjoÅ”i mainÄ«t pÄc cepures.
ManipulÄcijas ar cipariem ir jÄtaisa, Ŕķiet, vienkÄrÅ”i, bet tomÄr jÄpabÄž, nedod Dievs.
KatedrÄles maŔīnas ievÄrojami palÄninÄs no izmisÄ«gÄs GUI izmantoÅ”anas pat tad, kad pÄrlÅ«kojat pieejamo bloku bibliotÄkas.
Lai kaut ko pabeigtu mÄjÄs, jums ir jÄbÅ«t tam paÅ”am Simulink. Un patiesÄ«bÄ nav alternatÄ«vu.
JÄ, beigÄs mÄs, protams, projektu pabeidzÄm, bet pabeidzÄm to ar skaļu atvieglojuma izelpu.
PagÄja kÄds laiks, un mÄs nonÄcÄm pie pirmÄ maÄ£istra kursa beigÄm. MÄjas darbu apjoms, izmantojot GUI, sÄka samazinÄties proporcionÄli, pieaugot vÄcu priekÅ”metu Ä«patsvaram, lai gan tas vÄl nebija sasniedzis paradigmas maiÅas punktu. Daudzi no mums, tostarp es, pÄrvarot mÅ«su ievÄrojamo palielinÄÅ”anas amplitÅ«du, arvien vairÄk savos zinÄtniskajos projektos izmantoja Matlab (kaut arÄ« rÄ«klodziÅu veidÄ), nevis Ŕķietami pazÄ«stamo Simulink.
MÅ«su Å”aubu punkts bija viena otrÄ kursa studenta frÄze (viÅi tikko bija atgriezuÅ”ies KrievijÄ):
Aizmirstiet vismaz uz prakses laiku par Similink, MathCad un citiem LabView - pÄri kalnam viss ir uzrakstÄ«ts MATLAB, izmantojot paÅ”u MatLab vai tÄ bezmaksas āversijuā Octave.
Apgalvojums daļÄji izrÄdÄ«jÄs patiess: IlmenavÄ arÄ« strÄ«ds par instrumentu izvÄli netika lÄ«dz galam atrisinÄts. Tiesa, izvÄle lielÄkoties bija starp MATLAB, Python un C.
TajÄ paÅ”Ä dienÄ mani pÄrÅÄma dabisks satraukums: vai man nevajadzÄtu pÄrnest savu OFDM raidÄ«tÄja modeļa daļu uz skriptu? Prieka pÄc.
"TÄtad," es domÄju, "atkÄrtosim, ko mÄs modelÄsim?"
MÄs modelÄsim OFDM rÄmja Ä£enerators (OFDM kadru Ä£enerators).
Kas tajÄ ietvers:
informÄcijas simboli
pilota signÄli
nulles (lÄ«dzstrÄvas)
No kÄ mÄs (vienkÄrŔības labad) abstrahÄjamies:
no cikliskÄ prefiksa modelÄÅ”anas (ja zinÄt pamatus, to pievienot nebÅ«s grÅ«ti)
ApskatÄmÄ modeļa blokshÄma. MÄs apstÄsimies pie apgrieztÄ FFT (IFFT) bloka. Lai bilde bÅ«tu pilnÄ«ga, pÄrÄjo var turpinÄt katrs pats - apsolÄ«ju katedras skolotÄjiem kaut ko atstÄt skolÄniem.
DefinÄsim tos paÅ”i. vingrinÄjums:
fiksÄts apakÅ”pÄrvadÄtÄju skaits;
fiksÄts rÄmja garums;
mums jÄpievieno viena nulle vidÅ« un nulles pÄris kadra sÄkumÄ un beigÄs (kopÄ, 5 gabali);
informÄcijas simboli tiek modulÄti, izmantojot M-PSK vai M-QAM, kur M ir modulÄcijas secÄ«ba.
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
Tagad mÄs nosakÄm informÄcijas simbolu indeksus, pieÅemot pieÅÄmumu, ka pilota signÄliem noteikti jÄiet pirms un/vai aiz nullÄm:
%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx);
AttiecÄ«gi pilota signÄla indeksi ir viss pÄrÄjais:
%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);
Tagad sapratÄ«sim pilota signÄlus.
Mums ir veidne (mainÄ«gs piloti), un pieÅemsim, ka mÄs vÄlamies, lai Ŕīs veidnes piloti mÅ«su kadrÄ tiktu ievietoti secÄ«gi. Protams, to var izdarÄ«t cilpÄ. Vai arÄ« varat nedaudz paspÄlÄties ar matricÄm ā par laimi MATLAB ļauj to izdarÄ«t ar pietiekamu komfortu.
Vispirms noteiksim, cik no Ŕīm veidnÄm pilnÄ«bÄ iekļaujas kadrÄ:
pilots_len_psudo = floor(N_pil/length(pilots));
TÄlÄk mÄs veidojam vektoru, kas sastÄv no mÅ«su veidnÄm:
Un mÄs definÄjam nelielu vektoru, kas satur tikai veidnes daļu - āastiā, kas pilnÄ«bÄ neietilpst kadrÄ:
tail_len = fr_len - N_inf - length(nulls_idx) ...
- length(pilots)*pilots_len_psudo;
tail = pilots(1:tail_len); % "tail" of pilots vector
MÄs iegÅ«stam izmÄÄ£inÄjuma varoÅus:
vec_pilots = [resh; tail]; % completed pilots vector that frame consists
PÄriesim pie informÄcijas simboliem, proti, veidosim ziÅojumu un modulÄsim to:
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
ā SvÄtlaime! ā apmierinÄti nodomÄju un aizvÄru portatÄ«vo datoru. Man vajadzÄja pÄris stundas, lai paveiktu visu: ieskaitot koda rakstÄ«Å”anu, dažu Matlab funkciju apgÅ«Å”anu un matemÄtisko triku pÄrdomÄÅ”anu.
KÄdus secinÄjumus es toreiz izdarÄ«ju?
Subjektīvs:
Koda rakstīŔana ir patīkama un līdzīga dzejai!
SkriptÄÅ”ana ir ÄrtÄkÄ pÄtniecÄ«bas metode komunikÄcijas un signÄlu apstrÄdes jomÄ.
MÄrÄ·is:
Nav nepiecieÅ”ams Å”aut zvirbuļus no lielgabala (ja vien Å”Äds izglÄ«tojoÅ”s mÄrÄ·is, protams, nav tÄ vÄrts): izmantojot Simulink, mÄs Ä·ÄrÄmies pie vienkÄrÅ”as problÄmas risinÄÅ”anas ar izsmalcinÄtu rÄ«ku.
GUI ir laba, taÄu labÄk ir saprast, kas atrodas āzem pÄrsegaā.
Un tagad, bÅ«dams tÄlu no studenta, es gribu teikt studentu brÄlÄ«bai sekojoÅ”o:
Turiet droÅ”u prÄtu!
MÄÄ£iniet rakstÄ«t kodu, pat ja sÄkumÄ tas ir slikti. Ar programmÄÅ”anu, tÄpat kÄ ar jebkuru citu darbÄ«bu, grÅ«tÄkais ir sÄkums. Un labÄk ir sÄkt agrÄk: ja esat zinÄtnieks vai pat vienkÄrÅ”i tehniÄ·is, agrÄk vai vÄlÄk Ŕī prasme jums bÅ«s nepiecieÅ”ama.
Pieprasīt!
Pieprasiet no skolotÄjiem un vadÄ«tÄjiem progresÄ«vas pieejas un rÄ«kus. Ja tas ir iespÄjams, protams...
Izveidot!
Kur gan citur labÄk tikt pÄri visÄm iesÄcÄja sÄpÄm, ja ne izglÄ«tÄ«bas programmas ietvaros? Izveidojiet un uzlabojiet savas prasmes ā atkal, jo ÄtrÄk sÄkat, jo labÄk.
TopoÅ”ie programmÄtÄji no visÄm valstÄ«m, apvienojieties!
PS
Lai fiksÄtu savas tieÅ”Äs attiecÄ«bas ar studentiem, pievienoju atmiÅÄ paliekoÅ”u 2017. gada foto ar diviem rektoriem: PÄteri Å arfu (labajÄ pusÄ) un Albertu HarisoviÄu Gilmutdinovu (kreisajÄ pusÄ).
Bija vÄrts vismaz par Å”iem tÄrpiem programmu pabeigt! (joks)