"Manifesto alang sa pagsugod sa mga programmer gikan sa mga may kalabutan nga mga espesyalista" o kung giunsa nako kini nga punto sa kinabuhi

Ang akong artikulo karon mao ang mga hunahuna nga kusog gikan sa usa ka tawo nga mikuha sa dalan sa programming hapit sa aksidente (bisan natural).

Oo, akong nasabtan nga ang akong kasinatian mao ra ang akong kasinatian, apan alang kanako kini mohaum pag-ayo sa kinatibuk-ang uso. Dugang pa, ang kasinatian nga gihulagway sa ubos mas may kalabutan sa natad sa siyentipikanhong kalihokan, apan unsa ang impyerno wala magbiaybiay - kini mahimong mapuslanon sa gawas.

"Manifesto alang sa pagsugod sa mga programmer gikan sa mga may kalabutan nga mga espesyalista" o kung giunsa nako kini nga punto sa kinabuhi
Source: https://xkcd.com/664/

Sa kinatibuk-an, gipahinungod sa tanan nga mga estudyante karon gikan sa usa ka kanhing estudyante!

mga gilauman

Sa dihang nahuman nako ang akong bachelor's degree sa Infocommunication Technologies ug Communication Systems sa 2014, halos wala koy nahibal-an bahin sa kalibutan sa programming. Oo, sama sa uban, gikuha ko ang "Computer Science" nga subject sa akong unang tuig - apan, Ginoo, kini sa akong unang tuig! Kini usa ka kahangturan!

Sa kinatibuk-an, wala ako magdahom nga bisan unsa nga lahi nga lahi sa usa ka bachelor's degree, ug sa dihang misulod ako sa master's program. "Komunikasyon ug Pagproseso sa Signal" German-Russian nga Institute of New Technologies.

Apan sa kawang...

Kami ang ikaduha nga pag-inom, ug ang mga lalaki gikan sa una nag-impake pa sa ilang mga bag para sa layo nga Alemanya (ang internship mokabat ug unom ka bulan sa ikaduhang tuig sa master's degree). Sa laing pagkasulti, walay usa gikan sa diha-diha nga sirkulo ang seryoso nga nakasugat sa mga pamaagi sa edukasyon sa Europe, ug walay usa nga mangutana mahitungod sa mga detalye.

Sa among unang tuig, siyempre, kami adunay lain-laing mga matang sa mga praktis, diin kami sa kasagaran demokratikong gitanyag sa usa ka pagpili tali sa pagsulat scripts (nag-una sa MATLAB nga pinulongan) ug sa paggamit sa lain-laing mga kaayo espesyal nga GUIs (sa diwa nga walay pagsulat scripts - simulation modelo nga palibot).

"Manifesto alang sa pagsugod sa mga programmer gikan sa mga may kalabutan nga mga espesyalista" o kung giunsa nako kini nga punto sa kinabuhi

Dili kinahanglan nga isulti, kami, ang umaabot nga Masters of Science, gikan sa among pagkabatan-on nga kabuang, naglikay sa pagsulat sa code sama sa kalayo. Dinhi, pananglitan, ang Simulink gikan sa MathWorks: ania ang mga bloke, ania ang mga koneksyon, ania ang tanan nga klase sa mga setting ug switch.

Usa ka panglantaw nga lumad ug masabtan sa usa ka tawo nga nagtrabaho kaniadto sa disenyo sa sirkito ug mga sistema sa engineering!

"Manifesto alang sa pagsugod sa mga programmer gikan sa mga may kalabutan nga mga espesyalista" o kung giunsa nako kini nga punto sa kinabuhi
Source: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Mao nga ingon kanamo ...

Reality

Usa sa mga praktikal nga buhat sa unang semestre mao ang pagpalambo sa usa ka OFDM signal transceiver isip kabahin sa subject nga "Methods for Modeling and Optimization". Ang ideya malampuson kaayo: ang teknolohiya may kalabutan gihapon ug medyo popular tungod sa paggamit niini, pananglitan, sa Wi-Fi ug LTE/LTE-A nga mga network (sa porma sa OFDMA). Kini ang labing kaayo nga butang alang sa mga agalon nga magpraktis sa ilang mga kahanas sa pagmodelo sa mga sistema sa telecom.

"Manifesto alang sa pagsugod sa mga programmer gikan sa mga may kalabutan nga mga espesyalista" o kung giunsa nako kini nga punto sa kinabuhi

Ug karon gihatagan kami daghang mga kapilian sa teknikal nga mga detalye nga adunay klaro nga dili praktikal nga mga parameter sa frame (aron dili mangita usa ka solusyon sa Internet), ug among gisakyan ang nahisgutan na nga Simulink... Ug naigo kami sa ulo gamit ang usa ka teapot. sa kamatuoran:

  • Ang matag bloke puno sa daghang wala mailhi nga mga parameter, nga makahadlok nga usbon sa pagtulo sa usa ka kalo.
  • Ang mga manipulasyon nga adunay mga numero kinahanglan nga buhaton, ingon og, yano, apan kinahanglan pa nimo nga magsamok, idili sa Diyos.
  • Ang mga makina sa Cathedral mamatikdan nga hinay gikan sa kusog nga paggamit sa GUI, bisan sa yugto sa pag-surf sa mga librarya sa mga magamit nga bloke.
  • Aron mahuman ang usa ka butang sa balay, kinahanglan nimo nga adunay parehas nga Simulink. Ug, sa pagkatinuod, walay mga alternatibo.

Oo, sa katapusan, siyempre, nahuman namon ang proyekto, apan nahuman namon kini sa kusog nga pagginhawa sa kahupayan.

Milabay ang pipila ka panahon, ug miabut kami sa katapusan sa unang tuig sa master's degree. Ang gidaghanon sa homework nga naggamit sa mga GUI nagsugod sa pagkahulog nga proporsyonal sa pagtaas sa proporsiyon sa German nga mga sakop, bisan tuod kini wala pa makaabot sa punto sa usa ka paradigm shift. Daghan kanato, lakip nako, ang nakabuntog sa atong dakong amplitude sa pagtukod, nagkadaghang migamit sa Matlab sa atong mga siyentipikong proyekto (bisan pa sa porma sa Toolboxes), ug dili ang daw pamilyar nga Simulink.

Ang punto sa among mga pagduhaduha mao ang hugpong sa mga pulong sa usa sa mga estudyante sa ikaduhang tuig (bag-o pa lang silang mibalik sa Russia nianang panahona):

  • Kalimti, labing menos sa gidugayon sa internship, bahin sa Similink, MathCad ug uban pang LabView - sa ibabaw sa bungtod ang tanan gisulat sa MATLAB, gamit ang MatLab mismo o ang libre nga "bersyon" nga Octave.

Ang pahayag nahimo nga usa ka bahin nga tinuod: sa Ilmenau, ang panaglalis sa pagpili sa mga himan wala usab hingpit nga nasulbad. Tinuod, ang gipili kasagaran tali sa MATLAB, Python ug C.

Sa samang adlaw, nadala ko sa natural nga kahinam: dili ba nako ibalhin ang akong bahin sa OFDM transmitter model ngadto sa usa ka scripted nga porma? Lingaw-lingaw lang.

Ug nakatrabaho ko.

Lakang sa lakang

Imbis sa teoretikal nga mga kalkulasyon, maghatag lang ako usa ka link niini maayo kaayo nga artikulo 2011 gikan sa tgx ug sa mga slide LTE pisikal nga layer mga propesor Michel-Tila (TU Ilmenau). Sa akong hunahuna kini igo na.

β€œBusa,” naghunahuna ko, β€œatong sublion, unsay atong i-modelo?”
Mag model mi OFDM frame generator (OFDM frame generator).

Unsa ang maglakip niini:

  • mga simbolo sa impormasyon
  • mga signal sa piloto
  • mga sero (DC)

Unsa (alang sa kayano) atong gikuha gikan sa:

  • gikan sa pagmodelo sa usa ka cyclic prefix (kung nahibal-an nimo ang mga sukaranan, ang pagdugang niini dili lisud)

"Manifesto alang sa pagsugod sa mga programmer gikan sa mga may kalabutan nga mga espesyalista" o kung giunsa nako kini nga punto sa kinabuhi

Block diagram sa modelo nga gikonsiderar. Mohunong kami sa inverse FFT (IFFT) block. Aron makompleto ang litrato, ang tanan makapadayon sa nahabilin sa ilang kaugalingon - Gisaad nako ang mga magtutudlo gikan sa departamento nga magbilin usa ka butang alang sa mga estudyante.

Atong ipasabot ang mga para sa atong kaugalingon. ehersisyo:

  • pirmi nga gidaghanon sa mga sub-carrier;
  • gitakdang gitas-on sa frame;
  • kinahanglan nga magdugang kita og usa ka zero sa tunga ug usa ka parisan sa mga zero sa sinugdanan ug katapusan sa frame (total, 5 ka piraso);
  • Ang mga simbolo sa impormasyon gi-modulate gamit ang M-PSK o M-QAM, diin ang M mao ang modulation order.

Magsugod ta sa code.

Ang tibuok script mahimong ma-download gikan sa link.

Atong ipasabut ang mga parameter sa input:

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

Karon among gitino ang mga indeks sa mga simbolo sa impormasyon, nga nagdawat sa pasikaranan nga ang mga signal sa piloto kinahanglang mag-una ug/o human sa mga sero:

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

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

Dayon ang mga posisyon mahimong matino gamit ang function linspace, pagpaubos sa mga bili ngadto sa pinakagamay sa labing duol nga integer:

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

Atong idugang ang mga indeks sa mga sero niini ug paghan-ay:

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

Tungod niini, ang mga indeks sa signal sa piloto mao ang tanan:

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

Karon atong sabton ang pilot signal.

Adunay kami usa ka template (variable piloto), ug ingnon ta nga gusto namo ang mga piloto gikan niini nga template nga isulod sa among frame nga sunud-sunod. Siyempre, kini mahimo sa usa ka loop. O mahimo ka nga magdula og gamay nga tricky sa mga matrice - maayo na lang nga gitugotan ka sa MATLAB nga buhaton kini nga adunay igo nga kahupayan.

Una, atong hibal-an kung pila niini nga mga template ang hingpit nga mohaum sa frame:

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

Sunod, naghimo kami usa ka vector nga naglangkob sa among mga templates:

% 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

Ug among gihubit ang usa ka gamay nga vector nga adunay usa lamang ka piraso sa template - ang "ikog", nga dili hingpit nga mohaum sa frame:

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

Nakuha namon ang mga karakter sa piloto:

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

Mopadayon kita sa mga simbolo sa impormasyon, nga mao, maghimo kita og mensahe ug modulate kini:

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 

Andam na ang tanan! Pag-assemble sa frame:

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

Kinahanglan nga makakuha ka usa ka butang nga sama niini:

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

"Kalipay!" β€” Naghunahuna ko nga kontento ug gisira ang laptop. Nagkinahanglan ako og pipila ka oras aron mahimo ang tanan: lakip ang pagsulat sa code, pagkat-on sa pipila ka mga gimbuhaton sa Matlab ug paghunahuna pinaagi sa mga limbong sa matematika.

Unsang mga konklusyon ang akong gihimo kaniadto?

Subjective:

  • Ang pagsulat kodigo makapahimuot ug susama sa balak!
  • Ang Scripting mao ang labing sayon ​​​​nga pamaagi sa panukiduki alang sa natad sa Komunikasyon ug Pagproseso sa Signal.

Tumong:

  • Dili kinahanglan nga mag-shoot sa mga goryon gikan sa usa ka kanyon (gawas kung ang ingon nga katuyoan sa edukasyon, siyempre, takus niini): gamit ang Simulink, among gisulbad ang usa ka yano nga problema sa usa ka sopistikado nga himan.
  • Maayo ang GUI, apan mas maayo ang pagsabut kung unsa ang naa sa "sa ilawom sa hood".

Ug karon, kay layo man sa pagka-estudyante, gusto nakong isulti ang mosunod sa student fraternity:

  • Lakaw na!

Sulayi ang pagsulat sa code, bisan kung kini daotan sa una. Uban sa pagprograma, sama sa bisan unsang uban nga kalihokan, ang pinakalisud nga bahin mao ang sinugdanan. Ug mas maayo nga magsugod sa sayo pa: kung ikaw usa ka siyentista o bisan usa ka techie, sa madugay o sa madali kinahanglan nimo kini nga kahanas.

  • Demand!

Pagpangayo og mga progresibong pamaagi ug himan gikan sa mga magtutudlo ug mga superbisor. Kung mahimo kini, siyempre ...

  • Paghimo!

Asa pa ang mas maayo nga makuha ang tanan nga mga samad sa usa ka bag-ohan, kung dili sa sulud sa usa ka programa sa edukasyon? Paghimo ug paghashas sa imong mga kahanas - pag-usab, sa sayo nga pagsugod, mas maayo.

Aspiring programmer gikan sa tanang nasud, maghiusa!

PS

Aron marekord ang akong direktang relasyon sa mga estudyante, akong gilakip ang usa ka halandumon nga litrato sa 2017 uban sa duha ka mga rektor: Peter Scharff (tuo) ug Albert Kharisovich Gilmutdinov (wala).

"Manifesto alang sa pagsugod sa mga programmer gikan sa mga may kalabutan nga mga espesyalista" o kung giunsa nako kini nga punto sa kinabuhi

Angayan nga tapuson ang programa labing menos alang niini nga mga costume! (nagkatawa)

Source: www.habr.com

Idugang sa usa ka comment