"Манифест барои шурӯъкунандагон барномасозони ихтисосҳои алоқаманд" ё чӣ гуна ман ба ин нуқтаи ҳаёт расидам

Мақолаи имрӯзаи ман андешаҳои як нафарест, ки роҳи барномасозиро тақрибан тасодуфан пеш гирифтааст (ҳарчанд табиатан).

Бале, ман мефаҳмам, ки таҷрибаи ман танҳо таҷрибаи ман аст, аммо ба назарам он ба тамоюли умумӣ мувофиқат мекунад. Гузашта аз ин, таҷрибаи дар зер тавсифшуда бештар ба соҳаи фаъолияти илмӣ дахл дорад, аммо он чизе ки дӯзах шӯхӣ намекунад - он метавонад берун аз он муфид бошад.

"Манифест барои шурӯъкунандагон барномасозони ихтисосҳои алоқаманд" ё чӣ гуна ман ба ин нуқтаи ҳаёт расидам
Манбаъ: https://xkcd.com/664/

Умуман, бахшида ба ҳамаи донишҷӯёни ҳозира аз донишҷӯи собиқ!

Интизориҳо

Вақте ки ман дараҷаи бакалаврии худро дар Технологияҳои инфокоммуникатсионӣ ва системаҳои коммуникатсионӣ дар соли 2014 хатм кардам, ман дар бораи ҷаҳони барномасозӣ қариб чизе намедонистам. Бале, мисли бисёр дигарон, ман дар соли аввал фанни «Информатика»-ро гирифтам - аммо, Худовандо, ин дар соли аввали ман буд! Ин ҷовидона буд!

Умуман, ман чизеро аз дараҷаи бакалавр интизор набудам ва вақте ки ман ба барномаи магистрӣ дохил шудам "Муошират ва коркарди сигнал" Институти технологияҳои нави Олмону Русия.

Аммо беҳуда...

Мо ҳамагӣ қабули дуюм будем ва бачаҳои якум то ҳол халтаҳои худро ба Олмони дур ҷамъ меоварданд (таҷрибаомӯзӣ дар соли дуюми магистратура шаш моҳро мегирад). Ба ибораи дигар, касе аз доираи наздик ба усулҳои таълими аврупоӣ то ҳол ба таври ҷиддӣ рӯ ба рӯ нашуда буд ва касе набуд, ки ҷузъиёташро пурсад.

Дар соли аввали мо, албатта, мо намудҳои гуногуни таҷрибаҳо доштем, ки дар онҳо ба мо одатан ба таври демократӣ интихоби байни навиштани скриптҳо (асосан бо забони MATLAB) ва истифодаи GUI-ҳои гуногуни махсусгардонидашуда (ба маънои он, ки бидуни навиштани скриптҳо - симулятсия) пешниҳод карда мешуданд. муҳити моделсозӣ).

"Манифест барои шурӯъкунандагон барномасозони ихтисосҳои алоқаманд" ё чӣ гуна ман ба ин нуқтаи ҳаёт расидам

Ногуфта намонад, ки мо устодони илмҳои оянда аз аблаҳии ҷавонии худ мисли оташ аз навиштани код худдорӣ кардем. Дар ин ҷо, масалан, Simulink аз MathWorks: инҷо блокҳо ҳастанд, инҷо пайвастҳо ҳастанд, дар ин ҷо ҳама гуна танзимот ва коммутаторҳо мавҷуданд.

Назаре, ки барои шахсе, ки қаблан дар тарҳрезии схемаҳо ва муҳандисии системаҳо кор кардааст, модарӣ ва фаҳмо аст!

"Манифест барои шурӯъкунандагон барномасозони ихтисосҳои алоқаманд" ё чӣ гуна ман ба ин нуқтаи ҳаёт расидам
Манбаъ: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Ҳамин тавр ба мо чунин менамуд ...

Воқеӣ

Яке аз корҳои амалии семестри аввал таҳияи интиқоли сигнали OFDM дар доираи мавзӯи «Усулҳои моделсозӣ ва оптимизатсия» буд. Идея хеле муваффақ аст: технология ҳоло ҳам мувофиқ ва хеле маъмул аст, бинобар истифодаи он, масалан, дар шабакаҳои Wi-Fi ва LTE/LTE-A (дар шакли OFDMA). Ин беҳтарин чизест, ки устодон малакаҳои худро дар моделсозии системаҳои телекоммуникатсионӣ амалӣ кунанд.

"Манифест барои шурӯъкунандагон барномасозони ихтисосҳои алоқаманд" ё чӣ гуна ман ба ин нуқтаи ҳаёт расидам

Ва ҳоло ба мо якчанд вариантҳои мушаххасоти техникиро бо параметрҳои чаҳорчӯбаи баръало ғайриимкон медиҳанд (то он ки дар Интернет роҳи ҳалли худро наёбем) ва мо ба Simulink-и дар боло зикршуда мезанем... Ва ба сари мо чойник мезанад. воқеият:

  • Ҳар як блок аз бисёр параметрҳои номаълум иборат аст, ки онҳоро дар як қатра тағир додан даҳшатнок аст.
  • Манипуляцияҳоро бо рақамҳо кардан лозим аст, ба назар чунин менамояд, ки оддӣ, аммо шумо ба ҳар ҳол бояд ғавғо кунед, Худо нигоҳ дорад.
  • Мошинҳои соборӣ ҳатто дар марҳилаи сайругашт тавассути китобхонаҳои блокҳои мавҷуда аз истифодаи девонавори GUI ба таври назаррас суст мешаванд.
  • Барои анҷом додани чизе дар хона, шумо бояд ҳамон Simulink дошта бошед. Ва, дар асл, алтернатива нест.

Бале, дар охир мо, албатта, лоидаро ба анчом расондем, вале онро бо як нафаскашии баланд ба итмом расондем.

Аз байн чанд вакт гузашт ва мо соли якуми магистратураро ба охир расондем. Миқдори корҳои хонагӣ бо истифодаи GUI-ҳо мутаносибан бо афзоиши ҳиссаи субъектҳои олмонӣ коҳиш ёфт, гарчанде ки он ҳанӯз ба нуқтаи тағирёбии парадигма нарасидааст. Бисёре аз мо, аз ҷумла ман, амплитудаи назарраси худро барои бунёд кардан паси сар карда, Matlab-ро дар лоиҳаҳои илмии худ (ҳарчанд дар шакли қуттиҳои асбобҳо) истифода мебарем, на Simulink-и ба назар шинос.

Нуктаи шубҳаи мо ибораи яке аз донишҷӯёни курси дуюм буд (он вақт онҳо нав ба Русия баргашта буданд):

  • Дар бораи Similink, MathCad ва дигар LabView, ҳадди аққал дар давоми таҷриба фаромӯш кунед - дар болои теппа ҳама чиз дар MATLAB навишта шудааст, бо истифода аз худи MatLab ё "версияи" озоди Октава.

Ин изҳорот қисман дуруст буд: дар Илменау низоъ дар бораи интихоби асбобҳо низ комилан ҳал нашудааст. Дуруст аст, ки интихоб асосан дар байни MATLAB, Python ва C буд.

Худи ҳамон рӯз маро ҳаяҷони табиӣ фаро гирифт: оё ман набояд қисми модели интиқолдиҳандаи OFDM-ро ба шакли скрипт интиқол диҳам? Танҳо барои фароғат.

Ва ман ба кор даромадам.

Кадам ба кадам

Ба ҷои ҳисобҳои назариявӣ ман танҳо ба ин пайванд медиҳам мақолаи олӣ 2011 аз tgx ва дар слайдҳо Қабати физикии LTE профессорҳо Мишел-Тила (ТУ Ильменау). Ман фикр мекунам, ки ин кофӣ хоҳад буд.

"Пас," ман фикр кардам, "биёед такрор мекунем, ки мо чиро намуна меорем?"
Мо модел мекунем Генератори чаҳорчӯбаи OFDM (генератори чаҳорчӯбаи OFDM).

Он чиро дар бар мегирад:

  • рамзҳои иттилоотӣ
  • сигналҳои пилотӣ
  • сифрҳо (DC)

Мо (барои соддагӣ) аз чӣ хулоса мебарорем:

  • аз моделсозии префикси даврӣ (агар шумо асосҳоро донед, илова кардани он душвор нахоҳад буд)

"Манифест барои шурӯъкунандагон барномасозони ихтисосҳои алоқаманд" ё чӣ гуна ман ба ин нуқтаи ҳаёт расидам

Схемаи блоки модели мавриди назар. Мо дар блоки баръакси FFT (IFFT) таваққуф мекунем. Барои пурра кардани расм ҳар кас метавонад боқимондаашро худаш идома диҳад - Ман ба омӯзгорони кафедра ваъда додам, ки барои донишҷӯён чизе бимонанд.

Биёед онҳоро барои худамон муайян кунем. машқ:

  • шумораи муайяни зерборкашон;
  • дарозии чаҳорчӯбаи собит;
  • мо бояд як сифр дар мобайн ва як ҷуфт сифр дар аввал ва охири чаҳорчӯба (ҷамъ, 5 дона);
  • рамзҳои иттилоотӣ бо истифода аз M-PSK ё M-QAM модуляция карда мешаванд, ки дар он M тартиби модуляция аст.

Биёед бо код оғоз кунем.

Тамоми скриптро аз он зеркашӣ кардан мумкин аст пайванд.

Биёед параметрҳои вурудро муайян кунем:

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

Ҳоло мо нишондиҳандаҳои рамзҳои иттилоотиро муайян мекунем, бо назардошти он, ки сигналҳои пилотӣ бояд ҳатман пеш ва/ё пас аз сифрҳо бошанд:

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

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

Пас бо истифода аз функсия мавқеъҳоро муайян кардан мумкин аст фазо, кам кардани арзишҳо то хурдтарин ададҳои наздиктарин:

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

Биёед ба ин индексҳои сифрро илова кунем ва ҷудо кунем:

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

Мувофиқи ин, нишондиҳандаҳои сигнали пилотӣ ҳама чизи дигар мебошанд:

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

Акнун биёед сигналҳои пилотиро фаҳмем.

Мо як қолаб дорем (тағйирёбанда пилотҳо) ва бигӯем, ки мо мехоҳем, ки халабонҳои ин қолаб ба чаҳорчӯбаи мо пайдарпай ворид карда шаванд. Албатта, ин корро дар як давра кардан мумкин аст. Ё шумо метавонед бо матритсаҳо каме мушкил бозӣ кунед - хушбахтона MATLAB ба шумо имкон медиҳад, ки ин корро бо бароҳатии кофӣ анҷом диҳед.

Аввалан, биёед муайян кунем, ки чанде аз ин қолабҳо ба чаҳорчӯба комилан мувофиқанд:

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

Баъдан, мо вектореро ташкил медиҳем, ки аз қолабҳои мо иборат аст:

% 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

Ва мо як вектори хурдеро муайян мекунем, ки танҳо як порчаи шаблон - "дум" -ро дар бар мегирад, ки комилан ба чаҳорчӯба мувофиқат намекунад:

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

Мо аломатҳои пилотӣ мегирем:

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

Биёед ба рамзҳои иттилоотӣ гузарем, яъне мо паёмро ташаккул медиҳем ва онро модул мекунем:

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 

Ҳама омода аст! Ҷамъоварии чаҳорчӯба:

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

Шумо бояд чизе монанди ин гиред:

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

"Бахт!" — бо қаноатмандӣ фикр кардам ва ноутбукро бастам. Барои иҷрои ҳама чиз чанд соат лозим шуд: аз ҷумла навиштани код, омӯхтани баъзе функсияҳои Matlab ва тафаккур тавассути ҳилаҳои математикӣ.

Он гоҳ ман чӣ гуна хулоса баровардам?

Субъективӣ:

  • Рамзи навиштан гуворо ва шабоҳати шеър аст!
  • Скрипт усули мувофиқтарини тадқиқот барои соҳаи алоқа ва коркарди сигнал мебошад.

Вазифа:

  • Зарур нест, ки гунҷишкҳоро аз туп парронем (агар чунин ҳадафи таълимӣ, албатта, арзанда набошад): бо истифода аз Simulink, мо ҳалли як масъалаи оддиро бо асбоби мураккаб гирифтем.
  • GUI хуб аст, аммо фаҳмидани он чизе ки "дар зери кулоҳ" мавҷуд аст, беҳтар аст.

Ва акнун, ки аз донишҷӯй дур ҳастам, мехоҳам ба бародари донишҷӯён чунин бигӯям:

  • Биравед барои он!

Кӯшиш кунед, ки код нависед, ҳатто агар он дар аввал бад бошад. Бо барномасозӣ, мисли ҳама гуна фаъолият, душвортарин қисми он ибтидо аст. Ва беҳтар аст, ки барвақттар оғоз кунед: агар шумо олим бошед ё ҳатто танҳо техник бошед, дер ё зуд ба ин маҳорат ниёз доред.

  • Талабот!

Аз муаллимон ва роҳбарон усулҳо ва воситаҳои прогрессивӣ талаб кунед. Агар ин имконпазир бошад, албатта...

  • Эҷод кунед!

Боз дар куҷо беҳтар аст, ки ҳама захмҳои навкорро бартараф созем, агар дар доираи барномаи таълимӣ набошад? Маҳорати худро эҷод кунед ва такмил диҳед - боз ҳар қадар зудтар оғоз кунед, ҳамон қадар беҳтар аст.

Барномасозони шавқманд аз тамоми кишварҳо, як шавед!

PS

Барои сабти муносибати мустақими худ бо донишҷӯён, ман як акси хотиравии соли 2017-ро бо ду ректор: Питер Шарф (аз рост) ва Альберт Харисович Гилмутдинов (аз чап) замима мекунам.

"Манифест барои шурӯъкунандагон барномасозони ихтисосҳои алоқаманд" ё чӣ гуна ман ба ин нуқтаи ҳаёт расидам

Лозим буд, ки барномаро ҳадди аққал барои ин костюмҳо анҷом диҳед! (шӯхӣ)

Манбаъ: will.com

Илова Эзоҳ