ProHoster > Блог > интернет жаңалықтары > «Байланысты мамандықтардан бастаушы бағдарламашыларға арналған манифест» немесе мен өмірдің осы нүктесіне қалай жеттім
«Байланысты мамандықтардан бастаушы бағдарламашыларға арналған манифест» немесе мен өмірдің осы нүктесіне қалай жеттім
Менің бүгінгі мақалам бағдарламалау жолын кездейсоқ (табиғи болса да) қабылдаған адамның дауыстап айтқан ойлары.
Иә, менің тәжірибем тек менің тәжірибем екенін түсінемін, бірақ ол жалпы трендке жақсы сәйкес келетін сияқты. Сонымен қатар, төменде сипатталған тәжірибе ғылыми қызмет саласына көбірек қатысты, бірақ бұл әзіл емес - бұл сыртта пайдалы болуы мүмкін.
Жалпы, бұрынғы студенттен қазіргі барлық студенттерге арналған!
Күтілетін нәтижелер
Мен 2014 жылы «Инфокоммуникациялық технологиялар және коммуникациялық жүйелер» мамандығы бойынша бакалавр дәрежесін бітірген кезде мен бағдарламалау әлемі туралы ештеңе білмедім. Иә, басқалар сияқты мен де бірінші курста «Информатика» пәнін алдым, бірақ, Мырза, бұл менің бірінші курсымда болды! Бұл мәңгілік болды!
Жалпы, мен бакалавр дәрежесінен ерекше ештеңе күтпедім және магистратураға түскен кезде «Байланыс және сигналдарды өңдеу» Неміс-Ресей жаңа технологиялар институты.
Бекер…
Біз тек екінші қабылдаушы болдық, ал біріншісінің жігіттері әлі де алыстағы Германияға сөмкелерін жинап жатты (магистратураның екінші курсында тағылымдамадан өту алты айға созылады). Яғни, еуропалық білім беру әдістеріне жақын ортадан ешкім әлі шындап тап болған жоқ, егжей-тегжейлерін сұрайтын ешкім болмады.
Біздің бірінші жылымызда, әрине, бізде демократиялық түрде сценарийлерді жазу (негізінен MATLAB тілінде) және әртүрлі жоғары мамандандырылған графикалық интерфейстерді (скрипттерді жазбай - модельдеу деген мағынада) пайдалану арасында таңдау ұсынылатын әртүрлі тәжірибелер болды. модельдеу ортасы).
Біз, болашақ ғылым магистрлері, жастық ақымақтығымыздан оттай код жазудан аулақ болдық. Міне, мысалы, MathWorks-тен Simulink: міне блоктар, міне қосылымдар, мұнда параметрлер мен қосқыштардың барлық түрлері бар.
Бұрын схемалар мен жүйелер инженериясында жұмыс істеген адамға жергілікті және түсінікті көзқарас!
Бірінші семестрдегі практикалық жұмыстардың бірі «Модельдеу және оңтайландыру әдістері» пәнінің бөлігі ретінде OFDM сигнал қабылдағышын жасау болды. Идея өте сәтті: технология, мысалы, Wi-Fi және LTE/LTE-A желілерінде (OFDMA түрінде) қолданылуына байланысты әлі де өзекті және жеткілікті танымал. Бұл магистрлер үшін телекоммуникациялық жүйелерді модельдеу дағдыларын үйрену үшін ең жақсы нәрсе.
Енді бізге рамалық параметрлері анық практикалық емес техникалық сипаттамалардың бірнеше нұсқасы берілген (Интернеттен шешім іздемеу үшін) және біз жоғарыда айтылған Simulink-ке ұрынамыз... Ал басымызға шәйнекпен ұрамыз. шындық:
Әрбір блок көптеген белгісіз параметрлерге толы, оларды бір сәтте өзгерту қорқынышты.
Сандармен манипуляцияларды жасау керек, қарапайым сияқты, бірақ сіз әлі де әбігерге түсуіңіз керек, Құдай сақтасын.
Собор машиналары, тіпті қол жетімді блоктардың кітапханалары арқылы серфинг сатысында да, GUI-ны ашулы пайдаланудан айтарлықтай баяулайды.
Үйде бір нәрсені аяқтау үшін сізде бірдей Simulink болуы керек. Және, шын мәнінде, балама жоқ.
Иә, соңында біз, әрине, жобаны аяқтадық, бірақ біз оны рельефтің қатты дем шығаруымен аяқтадық.
Арада біраз уақыт өтіп, магистратураның бірінші курсын аяқтадық. GUI қолданатын үй тапсырмаларының көлемі неміс субъектілерінің үлес салмағының ұлғаюымен пропорционалды төмендей бастады, бірақ ол әлі парадигманың ауысу нүктесіне жетпеген. Біздің көпшілігіміз, соның ішінде мен де, өзіміздің үлкен амплитудамызды еңсере отырып, ғылыми жобаларымызда (құралдар қораптары түрінде болса да) Matlab-ті көбірек қолданып жатырмыз.
Біздің күмәніміз екінші курс студенттерінің бірінің сөзі болды (ол кезде олар Ресейге енді ғана оралған):
Кем дегенде тағылымдама кезінде Similink, MathCad және басқа LabView туралы ұмытыңыз - төбеде барлығы MatLab-тың өзін немесе оның Октаваның тегін «нұсқасын» пайдалану арқылы MATLAB-та жазылған.
Мәлімдеме ішінара шындық болып шықты: Ильменауда құралдарды таңдауға қатысты дау да толығымен шешілген жоқ. Рас, таңдау негізінен MATLAB, Python және C арасында болды.
Сол күні мені табиғи толқу қабылдады: мен OFDM таратқыш моделінің бөлігін сценарийлік пішінге көшіруім керек емес пе? Тек көңіл көтеру үшін.
Ал мен жұмысқа кірістім.
Бірте-бірте
Теориялық есептеулердің орнына мен бұған сілтеме беремін тамаша мақала 2011 жылдан бастап tgx және слайдтарда LTE физикалық деңгейі профессорлар Мишель-Тила (Ту Ильменау). Менің ойымша, бұл жеткілікті болады.
«Сонымен,» деп ойладым мен, «қайталап көрейік, біз нені үлгі етеміз?»
Біз үлгі боламыз OFDM жақтау генераторы (OFDM жақтау генераторы).
Оған не кіреді:
ақпараттық белгілер
пилоттық сигналдар
нөлдер (тұрақты ток)
Біз неден (қарапайымдылық үшін) деректеме аламыз:
циклдік префиксті модельдеуден (егер сіз негіздерді білсеңіз, оны қосу қиын болмайды)
Қарастырылып отырған модельдің құрылымдық сұлбасы. Біз кері 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
Енді біз пилоттық сигналдар міндетті түрде нөлге дейін және/немесе кейін болуы керек деген алғышартты қабылдай отырып, ақпараттық таңбалардың индекстерін анықтаймыз:
%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));
Содан кейін біз шаблондардан тұратын векторды жасаймыз:
Біз үлгінің бір бөлігін ғана қамтитын шағын векторды анықтаймыз - кадрға толығымен сәйкес келмейтін «құйрық»:
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
«Бақыт!» — Мен разы ойланып, ноутбукты жаптым. Маған барлығын істеу үшін бірнеше сағат қажет болды: код жазу, кейбір Matlab функцияларын үйрену және математикалық трюктар арқылы ойлау.
Сонда мен қандай қорытынды жасадым?
Субъективті:
Код жазу жағымды және поэзияға жақын!
Сценарий – байланыс және сигналдарды өңдеу саласы үшін ең қолайлы зерттеу әдісі.
Мақсат:
Торғайларды зеңбіректен атудың қажеті жоқ (егер мұндай білім беру мақсаты, әрине, оған тұрарлық болмаса): Simulink көмегімен біз күрделі құралмен қарапайым мәселені шешуге кірістік.
GUI жақсы, бірақ «қақпақтың астында» не бар екенін түсіну жақсы.
Ал енді студент болудан алыс болғандықтан, студенттік бауырластарға мынаны айтқым келеді:
Қарсы бол!
Бастапқыда жаман болса да, код жазып көріңіз. Бағдарламалауда, кез келген басқа әрекет сияқты, ең қиын бөлігі - бұл бастама. Ал ертерек бастаған дұрыс: егер сіз ғалым болсаңыз немесе жай ғана техник болсаңыз, ерте ме, кеш пе сізге бұл дағды қажет болады.
Сұраныс!
Мұғалімдер мен жетекшілерден прогрессивті тәсілдер мен құралдарды талап етіңіз. Бұл мүмкін болса, әрине...
Жасау!
Білім беру бағдарламасы аясында болмаса, жаңадан бастаған адамның барлық жараларын қай жерде жеңу жақсы? Өз дағдыларыңызды жасаңыз және жетілдіріңіз - қайтадан, неғұрлым тезірек бастасаңыз, соғұрлым жақсы.
Барлық елдерден ұмтылған бағдарламашылар, бірігіңіз!
PS
Студенттермен тікелей қарым-қатынасымды жазу үшін мен екі ректормен: Питер Шарфпен (оң жақта) және Альберт Харисович Гилмутдиновпен (сол жақта) 2017 жылғы естелік суретті қосамын.
Ең болмағанда осы костюмдер үшін бағдарламаны аяқтау керек еді! (әзіл)