"Manifesto ya waandaaji wa programu wanaoanza kutoka kwa taaluma zinazohusiana" au jinsi nilivyofikia hatua hii maishani

Nakala yangu ya leo ni mawazo kwa sauti kutoka kwa mtu ambaye alichukua njia ya programu karibu kwa bahati mbaya (ingawa kwa kawaida).

Ndiyo, ninaelewa kuwa uzoefu wangu ni uzoefu wangu tu, lakini inaonekana kwangu kwamba inafaa vizuri katika mwenendo wa jumla. Zaidi ya hayo, uzoefu ulioelezwa hapa chini unahusiana zaidi na uwanja wa shughuli za kisayansi, lakini ni nini kuzimu sio mzaha - inaweza kuwa na manufaa nje.

"Manifesto ya waandaaji wa programu wanaoanza kutoka kwa taaluma zinazohusiana" au jinsi nilivyofikia hatua hii maishani
Chanzo: https://xkcd.com/664/

Kwa ujumla, kujitolea kwa wanafunzi wote wa sasa kutoka kwa mwanafunzi wa zamani!

matarajio

Nilipomaliza shahada yangu ya kwanza katika Teknolojia ya Infocommunication na Mifumo ya Mawasiliano mnamo 2014, sikujua chochote kuhusu ulimwengu wa programu. Ndiyo, kama wengine wengi, nilichukua somo la "Sayansi ya Kompyuta" katika mwaka wangu wa kwanza - lakini, Bwana, ilikuwa mwaka wangu wa kwanza! Imekuwa milele!

Kwa ujumla, sikutarajia chochote tofauti na digrii ya bachelor, na nilipoingia kwenye programu ya bwana. "Mawasiliano na Usindikaji wa Mawimbi" Taasisi ya Teknolojia Mpya ya Ujerumani-Kirusi.

Lakini bure ...

Tulikuwa tu ulaji wa pili, na wavulana kutoka kwa kwanza walikuwa bado wanapakia mifuko yao kwa Ujerumani ya mbali (mafunzo huchukua miezi sita katika mwaka wa pili wa digrii ya bwana). Kwa maneno mengine, hakuna mtu kutoka kwa mduara wa karibu ambaye bado amekutana na mbinu za elimu ya Ulaya, na hakukuwa na mtu wa kuuliza kuhusu maelezo.

Katika mwaka wetu wa kwanza, kwa kweli, tulikuwa na aina anuwai za mazoea, ambayo kwa kawaida tulipewa chaguo kidemokrasia kati ya maandishi ya uandishi (haswa katika lugha ya MATLAB) na kutumia GUIs maalum (kwa maana kwamba bila kuandika maandishi - simulation. mazingira ya mfano).

"Manifesto ya waandaaji wa programu wanaoanza kutoka kwa taaluma zinazohusiana" au jinsi nilivyofikia hatua hii maishani

Bila shaka, sisi, Mastaa wa Sayansi wa siku zijazo, kutokana na ujinga wetu wa ujana, tuliepuka kuandika msimbo kama vile moto. Hapa, kwa mfano, ni Simulink kutoka MathWorks: hapa ni vitalu, hapa ni viunganisho, hapa kuna kila aina ya mipangilio na swichi.

Mtazamo ambao ni wa asili na unaoeleweka kwa mtu ambaye hapo awali amefanya kazi katika muundo wa mzunguko na uhandisi wa mifumo!

"Manifesto ya waandaaji wa programu wanaoanza kutoka kwa taaluma zinazohusiana" au jinsi nilivyofikia hatua hii maishani
Chanzo: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Kwa hivyo ilionekana kwetu ...

Ukweli

Mojawapo ya kazi za vitendo za muhula wa kwanza ilikuwa uundaji wa kipitishaji mawimbi cha OFDM kama sehemu ya somo la "Mbinu za Kuiga na Kuboresha". Wazo limefanikiwa sana: teknolojia bado inafaa na inajulikana kabisa kutokana na matumizi yake, kwa mfano, katika mitandao ya Wi-Fi na LTE/LTE-A (kwa namna ya OFDMA). Hili ndilo jambo bora zaidi kwa mabwana kufanya mazoezi ya ujuzi wao katika kuiga mifumo ya mawasiliano ya simu.

"Manifesto ya waandaaji wa programu wanaoanza kutoka kwa taaluma zinazohusiana" au jinsi nilivyofikia hatua hii maishani

Na sasa tunapewa chaguzi kadhaa za uainishaji wa kiufundi na vigezo vya sura visivyowezekana (ili tusitafute suluhisho kwenye mtandao), na tunapiga Simulink iliyotajwa tayari ... Na tunapigwa kichwani na teapot. ya ukweli:

  • Kila block imejaa vigezo vingi visivyojulikana, ambavyo vinatisha kubadili kwenye tone la kofia.
  • Udanganyifu na nambari unahitaji kufanywa, inaonekana, ni rahisi, lakini bado unapaswa kubishana, Mungu apishe mbali.
  • Mashine za kanisa kuu hupungua polepole kutoka kwa utumiaji mkali wa GUI, hata katika hatua ya kuvinjari kupitia maktaba za vizuizi vinavyopatikana.
  • Ili kumaliza kitu nyumbani, unahitaji kuwa na Simulink sawa. Na, kwa kweli, hakuna njia mbadala.

Ndio, mwishowe, kwa kweli, tulikamilisha mradi huo, lakini tulimaliza kwa pumzi kubwa ya utulivu.

Muda ulipita, tukafika mwisho wa mwaka wa kwanza wa shahada ya uzamili. Kiasi cha kazi ya nyumbani kwa kutumia GUI ilianza kupungua sawia na kuongezeka kwa sehemu ya masomo ya Kijerumani, ingawa ilikuwa bado haijafikia hatua ya mabadiliko ya dhana. Wengi wetu, ikiwa ni pamoja na mimi, tukishinda ukubwa wetu wa kujenga, tulitumia Matlab zaidi na zaidi katika miradi yetu ya kisayansi (ingawa katika mfumo wa Sanduku za Zana), na si Simulink inayoonekana kujulikana.

Hoja katika mashaka yetu ilikuwa kifungu cha mmoja wa wanafunzi wa mwaka wa pili (walikuwa wamerudi Urusi wakati huo):

  • Sahau, angalau kwa muda wa mafunzo kazini, kuhusu Similink, MathCad na LabView nyingine - juu ya kilima kila kitu kimeandikwa katika MATLAB, kwa kutumia MatLab yenyewe au "toleo" lake la bure la Octave.

Taarifa hiyo iligeuka kuwa kweli: huko Ilmenau, mzozo juu ya uchaguzi wa zana pia haukutatuliwa kabisa. Ukweli, chaguo lilikuwa kati ya MATLAB, Python na C.

Siku hiyohiyo, nilishikwa na msisimko wa asili: je, sipaswi kuhamisha sehemu yangu ya modeli ya kisambazaji cha OFDM hadi katika muundo wa hati? Kwa kujifurahisha tu.

Na nikaingia kazini.

Hatua kwa hatua

Badala ya mahesabu ya kinadharia, nitatoa kiunga cha hii makala bora 2011 kutoka tgx na kwenye slaidi Safu ya kimwili ya LTE maprofesa Michel-Tila (TU Ilmenau). Nadhani hii itatosha.

"Kwa hivyo," nilifikiria, "hebu turudie, tutaiga nini?"
Tutafanya mfano Jenereta ya fremu ya OFDM (Jenereta ya fremu ya OFDM).

Nini itajumuisha:

  • alama za habari
  • ishara za majaribio
  • sufuri (DC)

Ni nini (kwa ajili ya unyenyekevu) tunachochukua kutoka:

  • kutoka kwa kuiga kiambishi awali cha mzunguko (ikiwa unajua misingi, kuiongeza haitakuwa ngumu)

"Manifesto ya waandaaji wa programu wanaoanza kutoka kwa taaluma zinazohusiana" au jinsi nilivyofikia hatua hii maishani

Mchoro wa kuzuia wa mfano unaozingatiwa. Tutasimama kwenye kizuizi cha FFT (IFFT) kinyume. Ili kukamilisha picha, kila mtu anaweza kuendelea na mapumziko mwenyewe - niliahidi walimu kutoka idara kuwaachia kitu wanafunzi.

Hebu tufafanue hizo sisi wenyewe. mazoezi:

  • idadi maalum ya wabebaji wadogo;
  • urefu wa sura iliyowekwa;
  • lazima tuongeze sifuri moja katikati na jozi ya zero mwanzoni na mwisho wa sura (jumla, vipande 5);
  • alama za habari hurekebishwa kwa kutumia M-PSK au M-QAM, ambapo M ni mpangilio wa urekebishaji.

Hebu tuanze na kanuni.

Hati nzima inaweza kupakuliwa kutoka kiungo.

Wacha tufafanue vigezo vya kuingiza:

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

Sasa tunabainisha fahirisi za alama za taarifa, kwa kukubali msingi kwamba ishara za majaribio lazima ziende kabla na/au baada ya sufuri:

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

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

Kisha nafasi zinaweza kuamua kwa kutumia kazi linspace, kupunguza maadili hadi nambari ndogo kabisa kati ya nambari kamili zilizo karibu:

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

Wacha tuongeze faharisi za zero kwa hii na tupange:

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

Ipasavyo, fahirisi za ishara za majaribio ni kila kitu kingine:

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

Sasa hebu tuelewe ishara za majaribio.

Tuna template (variable marubani), na tuseme tunataka marubani kutoka kwa kiolezo hiki kuingizwa kwenye fremu yetu kwa kufuatana. Bila shaka, hii inaweza kufanyika kwa kitanzi. Au unaweza kucheza ujanja kidogo na matrices - kwa bahati nzuri MATLAB hukuruhusu kufanya hivyo kwa faraja ya kutosha.

Kwanza, hebu tubaini ni ngapi za templeti hizi zinazofaa kabisa kwenye fremu:

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

Ifuatayo, tunaunda vekta ambayo ina violezo vyetu:

% 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

Na tunafafanua vekta ndogo ambayo ina kipande tu cha template - "mkia", ambayo haifai kabisa kwenye sura:

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

Tunapata wahusika wa majaribio:

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

Wacha tuendelee kwenye alama za habari, ambayo ni, tutaunda ujumbe na kuurekebisha:

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 

Kila kitu kiko tayari! Kukusanya sura:

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

Unapaswa kupata kitu kama hiki:

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

"Furaha!" - Nilifikiria kwa kuridhika na kufunga kompyuta ndogo. Ilinichukua saa kadhaa kufanya kila kitu: ikiwa ni pamoja na kuandika msimbo, kujifunza baadhi ya kazi za Matlab na kufikiri kupitia mbinu za hisabati.

Ni hitimisho gani basi?

Kujitegemea:

  • Nambari ya uandishi ni ya kupendeza na sawa na ushairi!
  • Uandishi ndio njia rahisi zaidi ya utafiti kwa uwanja wa Mawasiliano na Uchakataji wa Mawimbi.

Lengo:

  • Hakuna haja ya kupiga shomoro kutoka kwa kanuni (isipokuwa lengo kama hilo la kielimu, kwa kweli, linafaa): kwa kutumia Simulink, tulichukua kutatua shida rahisi na zana ya kisasa.
  • GUI ni nzuri, lakini kuelewa kile kilichomo "chini ya kofia" ni bora zaidi.

Na sasa, kwa kuwa mbali na kuwa mwanafunzi, nataka kusema yafuatayo kwa udugu wa wanafunzi:

  • Nenda kwa hiyo!

Jaribu kuandika msimbo, hata kama ni mbaya mwanzoni. Kwa programu, kama ilivyo kwa shughuli nyingine yoyote, sehemu ngumu zaidi ni mwanzo. Na ni bora kuanza mapema: ikiwa wewe ni mwanasayansi au hata techie tu, mapema au baadaye utahitaji ujuzi huu.

  • Mahitaji!

Omba mbinu na zana zinazoendelea kutoka kwa walimu na wasimamizi. Ikiwa hii inawezekana, bila shaka ...

  • Unda!

Ni wapi pengine ni bora kupata vidonda vyote vya anayeanza, ikiwa sio ndani ya mfumo wa programu ya elimu? Unda na uboresha ujuzi wako - tena, mapema unapoanza, bora zaidi.

Watayarishaji programu wanaotaka kutoka nchi zote, ungana!

PS

Ili kurekodi uhusiano wangu wa moja kwa moja na wanafunzi, ninaambatisha picha ya kukumbukwa ya 2017 na watendaji wawili: Peter Scharff (kulia) na Albert Kharisovich Gilmutdinov (upande wa kushoto).

"Manifesto ya waandaaji wa programu wanaoanza kutoka kwa taaluma zinazohusiana" au jinsi nilivyofikia hatua hii maishani

Ilikuwa na thamani ya kumaliza programu angalau kwa mavazi haya! (mtani)

Chanzo: mapenzi.com

Kuongeza maoni