ProHoster > Blog > internetes hírek > „Kiáltvány a kapcsolódó szakterületeken kezdő programozóknak” vagy hogyan jutottam el idáig az életemben
„Kiáltvány a kapcsolódó szakterületeken kezdő programozóknak” vagy hogyan jutottam el idáig az életemben
Mai cikkem egy olyan ember hangos gondolatai, aki szinte véletlenül (bár természetesen) a programozás útjára lépett.
Igen, megértem, hogy a tapasztalataim csak az én tapasztalataim, de számomra úgy tűnik, hogy ez jól illeszkedik az általános trendbe. Sőt, az alább leírt tapasztalatok inkább a tudományos tevékenység területére vonatkoznak, de mi a fene nem viccel - kívül is hasznos lehet.
Általában minden jelenlegi diáknak szenteltem egy volt diáktól!
Elvárások
Amikor 2014-ben elvégeztem az Infokommunikációs Technológiák és Kommunikációs Rendszerek alapképzését, szinte semmit sem tudtam a programozás világáról. Igen, mint sokan mások, én is a „Számítástechnika” tárgyat vettem fel az első évben – de Uram, ez az első évben volt! Egy örökkévalóság telt el!
Általában nem számítottam semmi különösebbre egy alapképzéstől, és amikor beléptem a mesterképzésbe "Kommunikáció és jelfeldolgozás" Német-Orosz Új Technológiák Intézete.
De hiába...
Mi csak a második fogadó voltunk, és az első srácok még mindig a távoli Németországba pakoltak (a gyakorlat hat hónapig tart a mesterképzés második évében). Vagyis a közvetlen körből még senki sem találkozott komolyan az európai oktatás módszereivel, és nem volt kit kérdezni a részletekről.
Az első évfolyamunkban természetesen voltak különféle gyakorlataink, amelyek során általában demokratikusan választhattunk a szkriptek írása (főleg MATLAB nyelven) és a különféle speciális GUI-k használata (abban az értelemben, hogy szkriptek írása nélkül - szimuláció) között. modellező környezetek).
Mondanunk sem kell, hogy mi, a tudomány leendő mesterei fiatalkori butaságunkból elkerültük a kódírást, mint a tüzet. Itt van például a Simulink a MathWorksből: itt vannak a blokkok, itt a kapcsolatok, itt mindenféle beállítás és kapcsoló.
Olyan nézet, amely honos és érthető egy korábban áramkör-tervezésben és rendszermérnöki területen dolgozó ember számára!
Az első félév egyik gyakorlati munkája egy OFDM jeladó-vevő kifejlesztése volt a „Modellezési és optimalizálási módszerek” tantárgy keretében. Az ötlet nagyon sikeres: a technológia még mindig aktuális és meglehetősen népszerű, mivel például Wi-Fi és LTE/LTE-A hálózatokban (OFDMA formájában) használják. Ez a legjobb, ha a mesterek gyakorolhatják tudásukat a távközlési rendszerek modellezésében.
Most pedig több lehetőséget is kapunk a műszaki specifikációkból, nyilvánvalóan kivitelezhetetlen vázparaméterekkel (hogy ne a neten keressünk megoldást), és nekicsapunk a már említett Simulinknek... És fejbe kapunk egy teáskannával a valóságról:
Minden blokk tele van sok ismeretlen paraméterrel, amelyeket ijesztő egy cseppnyire megváltoztatni.
A számokkal végzett manipulációkat egyszerűnek tűnik, de még mindig muszáj dumálni, ne adj Isten.
A katedrális gépei észrevehetően lelassulnak a grafikus felhasználói felület eszeveszett használatától, még az elérhető blokkok könyvtáraiban való böngészés szakaszában is.
Ahhoz, hogy otthon befejezzen valamit, ugyanaz a Simulink kell. És valójában nincs alternatíva.
Igen, a végén természetesen befejeztük a projektet, de hangos megkönnyebbüléssel fejeztük be.
Eltelt egy kis idő, és elérkeztünk a mesterképzés első évének végéhez. A GUI-t használó házi feladatok mennyisége a német tantárgyak arányának növekedésével arányosan csökkenni kezdett, bár paradigmaváltásig még nem ért el. Sokan közülünk, köztük én is, túllépve a nagy felépítési amplitúdónkat, egyre gyakrabban használtuk a Matlabot tudományos projektjeinkben (bár eszköztárak formájában), és nem a látszólag ismerős Simulinket.
Kétségeinkben a lényeg az egyik másodéves hallgató mondata volt (akkor éppen visszatértek Oroszországba):
Felejtsd el, legalább a gyakorlat idejére, a Similinket, a MathCad-et és a többi LabView-t - a domb túloldalán minden MATLAB-ban van megírva, magát a MatLabot vagy annak ingyenes „verzióját” az Octave-t.
Az állítás részben igaznak bizonyult: Ilmenauban az eszközválasztás körüli vita sem oldódott meg teljesen. Igaz, leginkább a MATLAB, a Python és a C között lehetett választani.
Ugyanezen a napon természetes izgalom fogott el: nem kellene átraknom az OFDM adómodell részemet forgatókönyves formába? A hecc kedvéért.
És dolgoznom kellett.
Lépésről lépésre
Elméleti számítások helyett egyszerűen linket adok ehhez kiváló cikk 2011-től tgx és a diákon LTE fizikai réteg professzorok Michel-Tila (TU Ilmenau). Szerintem ez elég lesz.
"Szóval" - gondoltam - "ismételjük meg, mit fogunk modellezni?"
Modellezni fogunk OFDM keretgenerátor (OFDM keretgenerátor).
Amit tartalmazni fog:
információs szimbólumok
pilótajelek
nullák (DC)
Amitől (az egyszerűség kedvéért) elvonatkoztatunk:
ciklikus előtag modellezéséből (ha ismeri az alapokat, a hozzáadása nem lesz nehéz)
A vizsgált modell blokkvázlata. Megállunk az inverz FFT (IFFT) blokknál. Hogy teljes legyen a kép, a többit mindenki maga folytathatja – megígértem a tanszéki tanároknak, hogy hagynak valamit a diákoknak.
Határozzuk meg ezeket magunknak. gyakorlat:
rögzített számú alvivő;
rögzített kerethossz;
a keret közepére egy nullát, elejére és végére egy nullapárt kell hozzáadnunk (összesen 5 db);
az információs szimbólumokat M-PSK vagy M-QAM segítségével modulálják, ahol M a modulációs sorrend.
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
Most meghatározzuk az információs szimbólumok indexeit, elfogadva azt a feltevést, hogy a pilotjeleknek szükségszerűen nullák előtt és/vagy után kell menniük:
%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx);
Ennek megfelelően a pilotjel indexei minden más:
%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);
Most értsük meg a pilótajeleket.
Van egy sablonunk (változó pilóták), és tegyük fel, hogy az ebből a sablonból származó pilotokat szekvenciálisan szeretnénk beilleszteni a keretünkbe. Ez természetesen ciklusban is megtehető. Vagy játszhatsz egy kicsit trükkösen a mátrixokkal – szerencsére a MATLAB ezt megfelelő kényelemmel teszi lehetővé.
Először is határozzuk meg, hány ilyen sablon illeszkedik teljesen a keretbe:
pilots_len_psudo = floor(N_pil/length(pilots));
Ezután létrehozunk egy vektort, amely a sablonjainkból áll:
És meghatározunk egy kis vektort, amely csak a sablon egy darabját tartalmazza - a „farkot”, amely nem illeszkedik teljesen a keretbe:
tail_len = fr_len - N_inf - length(nulls_idx) ...
- length(pilots)*pilots_len_psudo;
tail = pilots(1:tail_len); % "tail" of pilots vector
Pilóta karaktereket kapunk:
vec_pilots = [resh; tail]; % completed pilots vector that frame consists
Térjünk át az információs szimbólumokra, vagyis egy üzenetet formálunk és moduláljuk:
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
"Boldogság!" — gondoltam elégedetten és becsuktam a laptopot. Néhány órába telt, mire mindent megcsináltam: kódot írni, Matlab függvényeket megtanulni és matematikai trükköket végiggondolni.
Milyen következtetéseket vontam le akkor?
Szubjektív:
A kódírás kellemes és a költészethez hasonló!
A szkriptelés a legkényelmesebb kutatási módszer a kommunikáció és a jelfeldolgozás területén.
Célkitűzés:
Nem kell ágyúból verebeket lőni (kivéve persze, ha egy ilyen nevelési cél megéri): a Simulink segítségével egy egyszerű feladat megoldását vállaltuk egy kifinomult eszközzel.
A grafikus felhasználói felület jó, de jobb megérteni, hogy mi található a „burkolat alatt”.
És most, mivel messze nem vagyok diák, a következőket szeretném mondani a diáktestvériségnek:
Bízzatok!
Próbálj meg kódot írni, még ha elsőre rossz is. A programozásnál, mint minden más tevékenységnél, a legnehezebb a kezdet. És jobb korábban kezdeni: ha tudós vagy akár csak technikus, előbb-utóbb szükséged lesz erre a készségre.
Igény!
Igényeljen progresszív megközelítéseket és eszközöket a tanároktól és a felügyelőktől. Ha ez lehetséges, persze...
Teremt!
Hol máshol jobb túllépni egy kezdő minden sebet, ha nem egy oktatási program keretében? Alkossd meg és fejleszd készségeidet – ismét, minél hamarabb kezded, annál jobb.
Törekvő programozók minden országból, egyesüljetek!
PS
A hallgatókkal való közvetlen kapcsolatom megörökítésére mellékelek egy emlékezetes fotót 2017-ről két rektorral: Peter Scharff (jobb oldalon) és Albert Kharisovich Gilmutdinov (bal oldalon).
Érdemes volt legalább ezekért a jelmezekért befejezni a programot! (viccel)