"Manîfestoya ji bo destpêka bernamenûsên ji pisporên têkildar" an ez çawa gihîştim vê nuqteya jiyanê

Gotara min îro ramanên bi dengekî bilind ji kesek e ku hema hema bi xeletî rêça bernamekirinê girtiye (her çend bi xwezayî).

Erê, ez fêm dikim ku ezmûna min tenê ezmûna min e, lê ji min re dixuye ku ew di meyla gelemperî de xweş tê. Digel vê yekê, ezmûna ku li jêr hatî destnîşan kirin bêtir bi qada çalakiya zanistî ve girêdayî ye, lê tiştê ku neqeb e - ew dikare li derve kêrhatî be.

"Manîfestoya ji bo destpêka bernamenûsên ji pisporên têkildar" an ez çawa gihîştim vê nuqteya jiyanê
Source: https://xkcd.com/664/

Bi gelemperî, ji xwendekarek berê re ji hemî xwendekarên heyî re tê veqetandin!

Hêvî

Dema ku min di sala 2014-an de lîsansa xweya lîsansê di Teknolojiyên Agahdariyê û Pergalên Ragihandinê de qedand, min hema di derbarê cîhana bernamesaziyê de tiştek nizanibû. Erê, mîna gelekên din, min di sala xwe ya yekem de mijara "Zanistiya Kompîturê" girt - lê, ya Xudan, ew di sala min a yekem de bû! Ew bêdawî bû!

Bi gelemperî, min ji lîsansek lîsansê tiştek bi taybetî cûda hêvî nedikir, û gava ku ez ketim bernameya masterê "Ragihandin û Pêvajoya Sînyal" Enstîtuya Almanî-Rûsî ya Teknolojiyên Nû.

Lê bê feyde...

Em tenê girtina duyemîn bûn, û xortên ji ya yekem hîna çenteyên xwe ji bo Almanyaya dûr pak dikirin (di sala duyemîn a masterê de staj şeş mehan digire). Bi gotineke din, heta niha tu kes ji derdora nêzîk bi awayekî cidî rastî rêbazên perwerdehiya Ewropî nehatibû û kes tunebû ku hûrguliyan bipirse.

Di sala meya yekem de, bê guman, me cûrbecûr pratîkên me hebûn, ku tê de bi gelemperî di navbera nivîsandina nivîsan de (bi taybetî bi zimanê MATLAB) û karanîna cûrbecûr GUI-yên pir pispor (di wateya ku bêyî nivîsandina senaryoyan - simulasyonê de hilbijartinek ji me re hate pêşkêş kirin. hawîrdorên modelkirinê).

"Manîfestoya ji bo destpêka bernamenûsên ji pisporên têkildar" an ez çawa gihîştim vê nuqteya jiyanê

Hêjayî gotinê ye, em Mamosteyên Zanistî yên pêşerojê, ji bêaqiliya xwe ya xortaniyê, ji nivîsandina kodên mîna agir dûr ketin. Li vir, mînakî, Simulink ji MathWorks e: Li vir blokan hene, li vir girêdan hene, li vir her cûre mîheng û guhêrbar hene.

Nêrînek ku ji bo kesê ku berê di sêwirana sêwiranê û endezyariya pergalê de xebitiye xwecî û têgihîştî ye!

"Manîfestoya ji bo destpêka bernamenûsên ji pisporên têkildar" an ez çawa gihîştim vê nuqteya jiyanê
Source: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Ji ber vê yekê ji me re xuya bû ...

Reality

Yek ji karên pratîkî yên nîvsala yekem pêşkeftina veguhezkarek nîşana OFDM wekî beşek ji mijara "Rêbazên Modelkirin û Optimîzasyonê" bû. Fikir pir serketî ye: teknolojî ji ber karanîna wê, mînakî, di torên Wi-Fi û LTE/LTE-A de (di forma OFDMA de) hîn jî têkildar û pir populer e. Ev tişta çêtirîn e ku axayan di modelkirina pergalên telekomê de jêhatîbûna xwe pratîk bikin.

"Manîfestoya ji bo destpêka bernamenûsên ji pisporên têkildar" an ez çawa gihîştim vê nuqteya jiyanê

Û naha ji me re çend vebijarkên taybetmendiyên teknîkî bi pîvanên çarçoweya eşkere ne pratîkî têne dayîn (da ku em li çareyek li ser Înternetê negerin), û em li ser Simulink-a ku berê hatî behs kirin diavêjin... Û em bi çaydankê de li serê me dikevin. rastiyê:

  • Her blok bi gelek parametreyên nenas ve tije ye, ku tirsnak e ku meriv di xwarê de biguhezîne.
  • Pêdivî ye ku manîpulasyonên bi hejmaran re bêne kirin, wusa dixuye, hêsan e, lê hûn dîsa jî neçar in, Xwedê nehêle.
  • Makîneyên Katedralê ji karanîna bêaqil a GUI-yê, tewra di qonaxa gerokê de di nav pirtûkxaneyên blokên berdest de jî hêdî hêdî hêdî dibin.
  • Ji bo ku hûn tiştek li malê biqedînin, hûn hewce ne ku heman Simulink hebe. Û, bi rastî, alternatîf tune.

Erê, di dawiyê de, bê guman, me proje qedand, lê me ew bi dengek bilind a rehetiyê temam kir.

Demek derbas bû, em hatin dawiya sala yekem a masterê. Hejmara karên malê yên ku GUI bikar tînin bi zêdebûna rêjeya mijarên Almanî re dest bi kêmbûnê kir, her çend ew hîn negihîştibû nuqteya guheztina paradîgmayê. Gelek ji me, di nav wan de ez jî, ji bo ku em ava bikin, pirtir û bêtir Matlab di projeyên xwe yên zanistî de bikar tînin (her çend di forma Toolboxes de), û ne Simulink-a ku xuya dike naskirî, bi ser keve.

Xala di gumanên me de gotina yek ji xwendekarên pola duyemîn bû (ew wê demê nû vegeriyabûn Rûsyayê):

  • Bi kêmanî ji bo dema stajyeriyê, Similink, MathCad û LabView yên din ji bîr bikin - li ser çiyê her tişt di MATLAB-ê de tê nivîsandin, bi karanîna MatLab bixwe an "guhertoya" wê ya belaş Octave.

Daxuyanî hinekî rast derket holê: li Ilmenau, nakokiya li ser hilbijartina amûran jî bi tevahî nehat çareser kirin. Rast e, bijare bi piranî di navbera MATLAB, Python û C de bû.

Di heman rojê de, ez bi heyecanek xwezayî ve hatim kişandin: Ma divê ez beşa xwe ya modela veguheztina OFDM veguhezînim formek nivîskî? Tenê ji bo kêfê.

Û ez ketim kar.

Gav bi gav

Li şûna hesabên teorîk, ez ê bi tenê girêdanek bidim vê yekê gotara hêja 2011 ji tgx û li ser slaytan LTE layer fîzîkî profesor Michel-Tila (TU Ilmenau). Ez difikirim ku ev ê bes be.

"Ji ber vê yekê," min fikirîn, "em dubare bikin, em ê çi bikin model?"
Em ê model bikin jeneratorê çarçoveyê OFDM (Generatorê çarçoveyê OFDM).

Ew ê çi bigire:

  • sembolên agahî
  • sînyalên pîlot
  • sifir (DC)

Çi (ji bo sadebûnê) em ji çi vediqetînin:

  • ji modelkirina pêşgirek cyclîk (heke hûn bingehên bingehîn dizanin, lê zêdekirina wê dê ne dijwar be)

"Manîfestoya ji bo destpêka bernamenûsên ji pisporên têkildar" an ez çawa gihîştim vê nuqteya jiyanê

Diyagrama blokê ya modela li ber çavan. Em ê li ser bloka berevajî FFT (IFFT) rawestin. Ji bo temamkirina wêneyê, her kes dikare yên mayî bixwe bidomîne - min soz da mamosteyên beşê ku ji xwendekaran re tiştek bihêlin.

Werin em wan ji xwe re diyar bikin. fêrbûn:

  • hejmara sabît ya sub-hilgir;
  • dirêjahiya çarçoveya sabît;
  • divê em yek sifir li naverastê û cotek sifir li serî û dawiya çarçovê (bi tevayî, 5 perçe) lê zêde bikin;
  • sembolên agahdarî bi karanîna M-PSK an M-QAM têne modul kirin, ku M fermana modulasyonê ye.

Ka em bi kodê dest pê bikin.

Tevahiya skrîptê dikare jê were daxistin link.

Ka em parametreyên têketinê diyar bikin:

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

Naha em nîşaneyên sembolên agahdarî destnîşan dikin, pêşnuma qebûl dikin ku nîşanên pîlotê pêdivî ye ku berî û/an piştî sifiran biçin:

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

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

Dûv re pozîsyon bi karanîna fonksiyonê têne destnîşankirin linspace, kêmkirina nirxan ji jimareyên herî nêzîk ên herî piçûk:

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

Ka em îndeksên sifiran lê zêde bikin û rêz bikin:

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

Li gorî vê yekê, nîşanên nîşana pîlotê her tiştê din in:

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

Naha em îşaretên pîlotê fam bikin.

Şablonek me heye (guherbar pîlot), û em bibêjin ku em dixwazin pîlotên vê şablonê bi rêzdarî di çarçoveya me de werin danîn. Bê guman, ev yek dikare di dorpêk de were kirin. An jî hûn dikarin bi matrican piçekî xapînok bilîzin - bextewar MATLAB dihêle hûn vê yekê bi rehetiya têr bikin.

Pêşîn, em destnîşan bikin ka çend ji van şablonan bi tevahî di çarçovê de cih digirin:

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

Piştre, em vektorek ku ji şablonên me pêk tê ava dikin:

% 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

Û em vektorek piçûk diyar dikin ku tenê perçeyek şablonê dihewîne - "dûvik", ku bi tevahî di çarçovê de cîh nagire:

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

Em karakterên pîlot digirin:

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

Ka em biçin ser sembolên agahdariyê, ango, em ê peyamek çêbikin û wê modul bikin:

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 

Her tişt amade ye! Komkirina çarçoveyê:

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

Divê hûn tiştek weha bistînin:

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

"Xwezî!" - Min bi kêfî fikirî û laptop girt. Ji min re du saet girt ku ez her tiştî bikim: di nav de nivîsandina kodê, hînbûna hin fonksiyonên Matlab û fikirîna bi hîleyên matematîkî.

Wê demê min çi encam derxist?

Nezerî:

  • Koda nivîsandinê xweş e û dişibe helbestê!
  • Skrîpt ji bo qada Têkilî û Pêvajoya Signalê rêbaza lêkolînê ya herî hêsan e.

Berdest:

  • Ne hewce ye ku çivîkan ji topan biavêjin (heta ku armancek perwerdehiyek wusa, bê guman, hêjayî wê nebe): bi karanîna Simulink, me bi amûrek sofîstîke ve pirsgirêkek hêsan çareser kir.
  • GUI baş e, lê têgihîştina tiştê ku "di binê kapê" de tê de heye çêtir e.

Û niha, ez ji xwendekariyê dûr im, dixwazim ji biratiya xwendekaran re van tiştan bibêjim:

  • Wê bigerin!

Biceribînin kodê binivîsin, her çend ew di destpêkê de xirab be. Bi bernamekirinê re, wekî her çalakiyek din, beşa herî dijwar destpêk e. Û çêtir e ku meriv zû dest pê bike: heke hûn zanyarek an jî tenê teknoloj in, zû an dereng hûn ê hewceyê vê jêhatîbûnê bin.

  • Xwestin!

Daxwaza nêzîkatî û amûrên pêşkeftî ji mamoste û çavdêran bikin. Ger ev gengaz be, bê guman ...

  • Xûliqandin!

Li ku derê çêtir e ku meriv hemî birînên destpêkek bi ser keve, heke ne di çarçoweya bernameyek perwerdehiyê de nebe? Zehmetiyên xwe biafirînin û biqedînin - dîsa, hûn zûtir dest pê bikin, baştir.

Bernamesazên dilxwaz ên ji hemî welatan, bibin yek!

PS

Ji bo ku ez têkiliya xwe ya rasterast bi xwendekaran re tomar bikim, ez wêneyek bîranîna 2017-an bi du rektoran ve girêdidim: Peter Scharff (rast) û Albert Kharisovich Gilmutdinov (çep).

"Manîfestoya ji bo destpêka bernamenûsên ji pisporên têkildar" an ez çawa gihîştim vê nuqteya jiyanê

Bi kêmanî ji bo van cilûbergan hêjayî qedandina bernameyê bû! ( henek dike)

Source: www.habr.com

Add a comment