ProHoster > Blog > lajme në internet > "Manifest për programues fillestarë nga specialitete të ngjashme" ose si arrita në këtë pikë të jetës
"Manifest për programues fillestarë nga specialitete të ngjashme" ose si arrita në këtë pikë të jetës
Artikulli im sot është mendime me zë të lartë nga një person që mori rrugën e programimit pothuajse rastësisht (megjithëse natyrshëm).
Po, e kuptoj që përvoja ime është vetëm përvoja ime, por më duket se përshtatet mirë me trendin e përgjithshëm. Për më tepër, përvoja e përshkruar më poshtë lidhet më shumë me fushën e veprimtarisë shkencore, por ajo që dreqin nuk është shaka - mund të jetë e dobishme jashtë.
Në përgjithësi, dedikuar për të gjithë studentët aktualë nga një ish-student!
pritjet
Kur përfundova diplomën time bachelor në Teknologjitë e Infokomunikacionit dhe Sistemet e Komunikimit në vitin 2014, nuk dija pothuajse asgjë për botën e programimit. Po, si shumë të tjerë, unë mora lëndën “Shkenca Kompjuterike” në vitin tim të parë - por, Zot, ishte në vitin e parë! Ka qenë një përjetësi!
Në përgjithësi, nuk prisja asgjë veçanërisht të ndryshme nga një diplomë bachelor, dhe kur hyra në programin master "Komunikimi dhe përpunimi i sinjalit" Instituti Gjermano-Rus i Teknologjive të Reja.
Por më kot...
Ne ishim vetëm marrja e dytë, dhe djemtë nga i pari ishin ende duke paketuar valixhet për në Gjermaninë e largët (prazhi zgjat gjashtë muaj në vitin e dytë të masterit). Me fjalë të tjera, askush nga rrethi i afërt ende nuk kishte hasur seriozisht në metodat e edukimit evropian dhe nuk kishte kush të pyeste për detajet.
Në vitin tonë të parë, natyrisht, ne kishim lloje të ndryshme praktikash, në të cilat zakonisht na ofrohej në mënyrë demokratike një zgjedhje midis shkrimit të skripteve (kryesisht në gjuhën MATLAB) dhe përdorimit të GUI-ve të ndryshme shumë të specializuara (në kuptimin që pa shkruar skripta - simulim mjediset e modelimit).
Eshtë e panevojshme të thuhet se ne, masterat e ardhshëm të shkencave, nga marrëzia jonë rinore, shmangëm shkrimin e kodit si zjarr. Këtu, për shembull, është Simulink nga MathWorks: këtu janë blloqet, këtu janë lidhjet, këtu janë të gjitha llojet e cilësimeve dhe çelsave.
Një pamje që është vendase dhe e kuptueshme për një person që ka punuar më parë në dizajnimin e qarkut dhe inxhinierinë e sistemeve!
Një nga punët praktike të semestrit të parë ishte zhvillimi i një transmetuesi të sinjalit OFDM si pjesë e lëndës “Metodat për Modelim dhe Optimizim”. Ideja është shumë e suksesshme: teknologjia është ende e rëndësishme dhe mjaft e njohur për shkak të përdorimit të saj, për shembull, në rrjetet Wi-Fi dhe LTE/LTE-A (në formën e OFDMA). Kjo është gjëja më e mirë që mjeshtrit të praktikojnë aftësitë e tyre në modelimin e sistemeve të telekomit.
Dhe tani na jepen disa opsione të specifikimeve teknike me parametra kornizë dukshëm jopraktike (për të mos kërkuar një zgjidhje në internet), dhe ne hidhemi në Simulinkun e përmendur tashmë ... Dhe goditemi në kokë me një çajnik e realitetit:
Çdo bllok është i mbushur me shumë parametra të panjohur, të cilët janë të frikshëm për t'u ndryshuar me rënien e kapelës.
Manipulimet me numrat duhen bërë, me sa duket, të thjeshta, por ju duhet të bëni bujë, Zoti na ruajt.
Makinat e katedrales ngadalësohen dukshëm nga përdorimi i furishëm i GUI, madje edhe në fazën e shfletimit nëpër bibliotekat e blloqeve të disponueshme.
Për të përfunduar diçka në shtëpi, duhet të keni të njëjtin Simulink. Dhe, në fakt, nuk ka alternativa.
Po, në fund, natyrisht, ne e përfunduam projektin, por e përfunduam atë me një frymëzim të lartë lehtësimi.
Kaloi pak kohë dhe arritëm në fund të vitit të parë të masterit. Sasia e detyrave të shtëpisë duke përdorur GUI filloi të bjerë proporcionalisht me rritjen e përqindjes së lëndëve gjermane, megjithëse nuk kishte arritur ende pikën e një ndryshimi paradigme. Shumë prej nesh, duke përfshirë edhe mua, duke kapërcyer amplituda tonë të konsiderueshme për të ndërtuar, gjithnjë e më shumë përdorim Matlab në projektet tona shkencore (megjithëse në formën e Toolboxes), dhe jo Simulink në dukje të njohur.
Pika në dyshimet tona ishte fraza e një prej studentëve të vitit të dytë (ata sapo ishin kthyer në Rusi në atë kohë):
Harrojeni, të paktën për kohëzgjatjen e praktikës, për Similink, MathCad dhe LabView të tjera - mbi kodër gjithçka është shkruar në MATLAB, duke përdorur vetë MatLab ose "versionin" e tij falas Octave.
Deklarata doli të ishte pjesërisht e vërtetë: në Ilmenau, mosmarrëveshja për zgjedhjen e mjeteve gjithashtu nuk u zgjidh plotësisht. Vërtetë, zgjedhja ishte kryesisht midis MATLAB, Python dhe C.
Në të njëjtën ditë, më përfshiu një eksitim i natyrshëm: a nuk duhet ta transferoj pjesën time të modelit të transmetuesit OFDM në një formë të shkruar? Vetëm për argëtim.
Dhe ia nisa punës.
Hap pas hapi
Në vend të llogaritjeve teorike, unë thjesht do të jap një lidhje me këtë artikull i shkëlqyer 2011 nga tgx dhe në sllajde Shtresa fizike LTE profesorët Mishel-Tila (TU Ilmenau). Unë mendoj se kjo do të mjaftojë.
"Pra," mendova, "le të përsërisim, çfarë do të modelojmë?"
Ne do të modelojmë Gjenerator i kornizës OFDM (gjenerator i kornizës OFDM).
Çfarë do të përfshijë:
simbolet e informacionit
sinjale pilot
zero (DC)
Nga çfarë abstraktojmë (për hir të thjeshtësisë):
nga modelimi i një prefiksi ciklik (nëse i dini bazat, shtimi i tij nuk do të jetë i vështirë)
Bllok diagrami i modelit në shqyrtim. Ne do të ndalemi në bllokun e kundërt FFT (IFFT). Për të plotësuar pamjen, të gjithë mund të vazhdojnë vetë pjesën tjetër - u premtova mësuesve të departamentit që të linin diçka për studentët.
Le t'i përcaktojmë ato për veten tonë. ushtrim:
numri fiks i nën-bartësve;
gjatësi fikse e kornizës;
duhet të shtojmë një zero në mes dhe një palë zero në fillim dhe në fund të kornizës (gjithsej, 5 copë);
simbolet e informacionit modulohen duke përdorur M-PSK ose M-QAM, ku M është rendi i modulimit.
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
Tani ne përcaktojmë indekset e simboleve të informacionit, duke pranuar premisën që sinjalet pilot duhet të shkojnë domosdoshmërisht para dhe/ose pas zerove:
Le të shtojmë indekset e zerove në këtë dhe të renditim:
%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx);
Prandaj, indekset e sinjalit pilot janë gjithçka tjetër:
%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);
Tani le të kuptojmë sinjalet pilot.
Ne kemi një shabllon (ndryshues Pilotët), dhe le të themi se duam që pilotët nga ky shabllon të futen në kornizën tonë në mënyrë sekuenciale. Sigurisht, kjo mund të bëhet në një lak. Ose mund të luani pak të ndërlikuar me matricat - për fat të mirë, MATLAB ju lejon ta bëni këtë me komoditet të mjaftueshëm.
Së pari, le të përcaktojmë se sa nga këto shabllone përshtaten plotësisht në kornizë:
pilots_len_psudo = floor(N_pil/length(pilots));
Më pas, ne formojmë një vektor që përbëhet nga shabllonet tona:
Dhe ne përcaktojmë një vektor të vogël që përmban vetëm një pjesë të shabllonit - "bishtin", i cili nuk përshtatet plotësisht në kornizë:
tail_len = fr_len - N_inf - length(nulls_idx) ...
- length(pilots)*pilots_len_psudo;
tail = pilots(1:tail_len); % "tail" of pilots vector
Ne marrim personazhe pilot:
vec_pilots = [resh; tail]; % completed pilots vector that frame consists
Le të kalojmë te simbolet e informacionit, domethënë, ne do të formojmë një mesazh dhe do ta modulojmë atë:
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
"Lumturi!" — Mendova i kënaqur dhe mbylla laptopin. M'u deshën disa orë për të bërë gjithçka: duke përfshirë shkrimin e kodit, mësimin e disa funksioneve të Matlab dhe të menduarit përmes trukeve matematikore.
Çfarë përfundimesh nxora atëherë?
Subjektive:
Shkrimi i kodit është i këndshëm dhe i ngjashëm me poezinë!
Skriptimi është metoda më e përshtatshme e kërkimit për fushën e Komunikimit dhe Përpunimit të Sinjalit.
Objektiv:
Nuk ka nevojë të qëlloni harabela nga një top (përveç nëse një qëllim i tillë arsimor, natyrisht, ia vlen): duke përdorur Simulink, ne morëm përsipër zgjidhjen e një problemi të thjeshtë me një mjet të sofistikuar.
GUI është i mirë, por është më mirë të kuptosh se çfarë përmban "nën kapuç".
Dhe tani, duke qenë larg të qenit student, dua t'i them sa vijon vëllazërisë studentore:
Shkoni për të!
Provoni të shkruani kodin, edhe nëse në fillim është i keq. Me programimin, si me çdo aktivitet tjetër, pjesa më e vështirë është fillimi. Dhe është më mirë të filloni më herët: nëse jeni një shkencëtar apo edhe thjesht një teknik, herët a vonë do t'ju duhet kjo aftësi.
Kërkoni!
Kërkoni qasje dhe mjete progresive nga mësuesit dhe mbikëqyrësit. Nëse kjo është e mundur, sigurisht ...
Krijo!
Ku tjetër është më mirë të kapërceni të gjitha plagët e një fillestari, nëse jo në kuadrin e një programi arsimor? Krijoni dhe përmirësoni aftësitë tuaja - përsëri, sa më shpejt të filloni, aq më mirë.
Programues aspirantë nga të gjitha vendet, bashkohuni!
PS
Për të regjistruar marrëdhënien time të drejtpërdrejtë me studentët, po bashkangjit një foto të paharrueshme të vitit 2017 me dy rektorë: Peter Scharff (në të djathtë) dhe Albert Kharisovich Gilmutdinov (në të majtë).
Ia vlente te mbaroje programin te pakten per keto kostume! (bëj shaka)