ProHoster > Blog > nutizie internet > "Manifestu per i programatori principianti da specialità rilativi" o cumu aghju ghjuntu à questu puntu in a vita
"Manifestu per i programatori principianti da specialità rilativi" o cumu aghju ghjuntu à questu puntu in a vita
U mo articulu d'oghje hè pinsamenti à voce alta da una persona chì hà pigliatu a strada di prugrammazione guasi per accidenti (ancu se naturalmente).
Iè, aghju capitu chì a mo sperienza hè solu a mo sperienza, ma mi pari chì si mette bè in a tendenza generale. Inoltre, l'esperienze descritte quì sottu sò più in u campu di l'attività scientifica, ma ciò chì l'infernu ùn hè micca scherzu - pò esse utile fora.
In generale, dedicatu à tutti i studienti attuali da un ex studiente!
Aspettative
Quandu aghju finitu u mo bachelor in Tecnulugie di l'Infocomunicazione è Sistemi di Comunicazione in 2014, ùn sapia quasi nunda di u mondu di a prugrammazione. Iè, cum'è parechji altri, aghju pigliatu u sughjettu "Computer Science" in u mo primu annu - ma, Signore, era in u mo primu annu! Hè stata una eternità !
In generale, ùn m'aspittava nunda di particulari sfarente da un diploma di bachelor, è quandu aghju intrutu in u prugramma di maestru "Communication and Signal Processing" Istitutu Germanu-Russu di Nuvelle Tecnulugie.
Ma in vain...
Eramu solu a seconda ingesta, è i picciotti di u primu eranu sempre impacchendu i so sacchetti per a Germania distanti (u stage dura sei mesi in u secondu annu di u prugramma di u maestru). In altri palori, nimu di u circondu immediata ùn avia ancu scontru seriamente i metudi di l'educazione europea, è ùn ci era nimu per dumandà i dettagli.
In u nostru primu annu, di sicuru, avemu avutu varii tipi di pratiche, in quale ci sò stati generalmente pruposti demucraticamente una scelta trà scrittura scripts (principalmente in a lingua MATLAB) è utilizendu diverse GUI altamente specializate (in u sensu chì senza scrive scripts - simulazione). ambienti di mudellu).
Inutili, noi, i futuri Maestri di Scienze, da a nostra stupidità di ghjuventù, evitemu di scrive codice cum'è u focu. Eccu, per esempiu, Simulink da MathWorks: quì sò i blocchi, quì sò e cunnessione, quì sò tutti i tipi di paràmetri è switches.
Una vista chì hè nativa è comprensibile per una persona chì hà travagliatu prima in u disignu di circuiti è ingegneria di sistemi!
Unu di i travaglii pratichi di u primu semestru hè statu u sviluppu di un transceiver di signale OFDM cum'è parte di u sughjettu "Metodi per Mudelle è Optimization". L'idea hè assai successu: a tecnulugia hè sempre pertinenti è abbastanza populari per via di u so usu, per esempiu, in e rete Wi-Fi è LTE / LTE-A (in a forma di OFDMA). Questu hè u megliu per i maestri per praticà e so cumpetenze in mudelli di sistemi di telecomunicazione.
È avà ci sò datu parechje opzioni di specificazioni tecniche cù paràmetri di quadru ovviamente impraticabili (per ùn circà una suluzione in Internet), è si sbattemu nantu à u Simulink digià citatu ... È avemu culpitu nantu à a testa cù una teiera. di a realità:
Ogni bloccu hè chjappu cù assai paràmetri scunnisciuti, chì sò spaventosi per cambià à a goccia di un cappellu.
I manipulazioni cù i numeri deve esse fattu, pare, simplicità, ma avete sempre à fussi, Diu ùn ci vole.
Macchine cattedrale rallenta notevolmente da l'usu freneticu di a GUI, ancu in a tappa di navigazione à traversu biblioteche di blocchi dispunibili.
Per finisce qualcosa in casa, avete bisognu à avè u listessu Simulink. È, in fatti, ùn ci hè micca alternative.
Iè, à a fine avemu, sicuru, cumpletu u prughjettu, ma l'avemu cumpletu cù una exhalation forte di sollievu.
Qualchì tempu passava, è avemu ghjuntu à a fine di u primu annu di u maestru. A quantità di i travaglii chì utilizanu GUI hà cuminciatu à falà proporzionalmente cù l'aumentu di a proporzione di sughjetti tedeschi, ancu s'ellu ùn avia ancu ghjuntu à u puntu di un cambiamentu di paradigma. Parechje di noi, cumpresu mè, superendu a nostra amplitude considerable per custruisce, più è più utilizatu Matlab in i nostri prughjetti scientifichi (anche in forma di Toolboxes), è micca u Simulink apparentemente familiar.
U puntu in i nostri dubbii era a frasa di unu di i studienti di u sicondu annu (eranu tornatu in Russia à quellu tempu):
Scurdate, almenu per a durata di u stage, circa Similink, MathCad è altri LabView - sopra a muntagna tuttu hè scrittu in MATLAB, utilizendu MatLab stessu o a so "versione" libera Octave.
A dichjarazione hè stata in parte vera: in Ilmenau, a disputa nantu à l'scelta di l'arnesi ùn hè micca stata cumpletamente risolta. Hè veru, a scelta era principalmente trà MATLAB, Python è C.
In u stessu ghjornu, aghju statu pigliatu da una eccitazione naturali: ùn deve micca trasfiriri a mo parte di u mudellu di trasmettitore OFDM in una forma scripted? Solu per piacè.
È aghju avutu à travaglià.
Passu dopu
Invece di calculi teorichi, daraghju solu un ligame à questu eccellente articulu 2011 da tgx è nantu à i slides Stratu fisicu LTE prufessori Michel-Tila (TU Ilmenau). Pensu chì questu serà abbastanza.
"Allora", aghju pensatu, "ripetemu, chì andemu à modellu?"
Avemu modellu Generatore di frame OFDM (generatore di frame OFDM).
Ciò chì includerà:
simboli d'infurmazione
signali di pilotu
zeros (DC)
Chì (per a simplicità) avemu astrattu da:
da u modellu di un prefissu ciclicu (se cunnosci i principii, aghjunghjendu ùn serà micca difficiule)
Schema di bloccu di u mudellu in cunsiderà. Ci fermemu à u bloccu FFT inversu (IFFT). Per compie a stampa, ognunu pò cuntinuà u restu stessu - aghju prumessu à i prufessori di u dipartimentu di lascià qualcosa per i studienti.
Definimu quelli per noi stessi. eserciziu:
numeru fissu di sub-trasportatori;
lunghezza di quadru fissu;
duvemu aghjunghje un cero in u mità è un paru di cero à u principiu è a fine di u quadru (totale, 5 pezzi);
I simboli di l'infurmazioni sò modulati cù M-PSK o M-QAM, induve M hè l'ordine di modulazione.
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
Avà determinà l'indici di i simboli d'infurmazioni, accettendu a premessa chì i signali di pilotu devenu necessariamente andà prima è / o dopu zeri:
%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx);
Per quessa, l'indici di signale pilotu sò tuttu u restu:
%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);
Avà capimu i signali di pilotu.
Avemu un mudellu (variable piloti), è dicemu chì vulemu chì i piloti da stu mudellu sò inseriti in u nostru quadru sequentially. Di sicuru, questu pò esse fattu in un ciclu. O pudete ghjucà un pocu complicatu cù matrici - per furtuna MATLAB vi permette di fà questu cun abbastanza cunfortu.
Prima, determinemu quanti di sti mudelli sò cumpletamente in u quadru:
pilots_len_psudo = floor(N_pil/length(pilots));
In seguitu, formemu un vettore chì hè custituitu da i nostri mudelli:
E avemu definitu un picculu vettore chì cuntene solu un pezzu di u mudellu - a "coda", chì ùn si mette micca cumpletamente in u quadru:
tail_len = fr_len - N_inf - length(nulls_idx) ...
- length(pilots)*pilots_len_psudo;
tail = pilots(1:tail_len); % "tail" of pilots vector
Avemu i caratteri piloti:
vec_pilots = [resh; tail]; % completed pilots vector that frame consists
Passemu à i simboli di l'infurmazioni, vale à dì, formeremu un missaghju è u moduleremu:
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
"Beatitudine!" - Pensu cuntentu è chjusu u laptop. Mi pigliò un paru d'ore per fà tuttu: cumpresu scrive codice, amparà alcune funzioni di Matlab è pensendu à i trucchi matematichi.
Chì cunclusioni aghju fattu allora ?
Sughjettivu:
U codice di scrittura hè piacevule è simile à a puesia !
U scripting hè u metudu di ricerca più convenientu per u campu di a cumunicazione è l'elaborazione di u signale.
Ughjettivu:
Ùn ci hè bisognu di sparà sparrows da un cannone (salvo chì un tali scopu educativu hè, sicuru, vale a pena): utilizendu Simulink, avemu pigliatu à risolve un prublema simplice cù un strumentu sofisticatu.
GUI hè bonu, ma capisce ciò chì hè cuntenutu "sottu u cappucciu" hè megliu.
È avà, essendu luntanu da esse un studiente, vogliu dì ciò chì segue à a fraternità studiente :
Dare!
Pruvate di scrive codice, ancu s'ellu hè male in prima. Cù prugrammazione, cum'è cù qualsiasi altra attività, a parte più dura hè u principiu. È hè megliu principià prima: sè vo site un scientist o ancu solu un tecnicu, prima o dopu avete bisognu di sta abilità.
A dumanda !
Esige approcci progressivi è strumenti da i prufessori è i supervisori. Sì questu hè pussibule, sicuru ...
Crea!
Induve altru hè megliu per superà tutte e ferite di un principiante, se micca in u quadru di un prugramma educativu? Crea è affinà e vostre cumpetenze - di novu, più prestu cuminciate, megliu.
Aspiranti programatori di tutti i paesi, unite!
PS
Per registrà a mo relazione diretta cù i studienti, aghju attaccatu una foto memorable di 2017 cù dui rettori: Peter Scharff (à a diritta) è Albert Kharisovich Gilmutdinov (à a manca).
Valeva a pena di finisce u prugramma almenu per issi costumi ! (scherza)