“ከተዛማጅ ስፔሻሊስቶች ለጀማሪ ፕሮግራም አውጪዎች ማኒፌስቶ” ወይም እንዴት እዚህ የህይወት ደረጃ ላይ እንደደረስኩ።

የዛሬው ፅሑፌ በአጋጣሚ (በተፈጥሮ ቢሆንም) የፕሮግራሚንግ መንገዱን ከያዘ ሰው የወጣ ሀሳብ ነው።

አዎ፣ የእኔ ልምድ የእኔ ተሞክሮ ብቻ እንደሆነ ተረድቻለሁ፣ ግን ለእኔ ከአጠቃላይ አዝማሚያ ጋር በጥሩ ሁኔታ የሚስማማ ይመስላል። ከዚህም በላይ, ከዚህ በታች የተገለጸው ልምድ ሳይንሳዊ እንቅስቃሴ መስክ ጋር የበለጠ ይዛመዳል, ነገር ግን ገሃነም ምን ቀልድ አይደለም - ውጭ ጠቃሚ ሊሆን ይችላል.

“ከተዛማጅ ስፔሻሊስቶች ለጀማሪ ፕሮግራም አውጪዎች ማኒፌስቶ” ወይም እንዴት እዚህ የህይወት ደረጃ ላይ እንደደረስኩ።
ምንጭ: https://xkcd.com/664/

በአጠቃላይ፣ ከቀድሞ ተማሪ ለነበሩ ተማሪዎች በሙሉ የተሰጠ!

የሚጠበቁ ነገሮች

በ2014 የመጀመርያ ዲግሪዬን በኢንፎኮሙኒኬሽን ቴክኖሎጂስ እና ኮሙኒኬሽን ሲስተምስ ሳጠናቅቅ ስለፕሮግራም አለም ምንም የማውቀው ነገር የለም። አዎን፣ ልክ እንደሌሎች ብዙ፣ “የኮምፒዩተር ሳይንስ”ን ርዕሰ ጉዳይ የወሰድኩት በመጀመሪያው አመት ነበር - ግን፣ ጌታ ሆይ፣ በመጀመሪያው አመት ነበር! ዘላለማዊ ነበር!

በአጠቃላይ, ከባችለር ዲግሪ የተለየ የተለየ ነገር አልጠበቅኩም, እና ወደ ማስተር ፕሮግራም ስገባ "የግንኙነት እና የሲግናል ሂደት" የጀርመን-ሩሲያ የአዳዲስ ቴክኖሎጂዎች ተቋም.

ግን በከንቱ...

እኛ የሁለተኛው መግቢያ ብቻ ነበርን ፣ እና የመጀመርያዎቹ ሰዎች አሁንም ቦርሳቸውን እያሸጉ ለርቀት ጀርመን ነበር (ስልጠናው በሁለተኛ ዲግሪ ሁለተኛ አመት ስድስት ወር ይወስዳል)። በሌላ አነጋገር ከቅርቡ ክበብ ውስጥ ማንም ሰው የአውሮፓን ትምህርት ዘዴዎች በቁም ነገር አላጋጠመውም, እና ስለ ዝርዝሮቹ የሚጠይቅ ማንም አልነበረም.

በአንደኛው አመት ፣ በእርግጥ ፣ እኛ ብዙውን ጊዜ ስክሪፕቶችን በመፃፍ (በተለይ በ MATLAB ቋንቋ) እና ልዩ ልዩ GUIዎችን በመጠቀም በዲሞክራሲያዊ መንገድ ምርጫ ይሰጡን የነበሩ የተለያዩ አይነት ልምዶች ነበሩን ። ሞዴሊንግ አካባቢዎች).

“ከተዛማጅ ስፔሻሊስቶች ለጀማሪ ፕሮግራም አውጪዎች ማኒፌስቶ” ወይም እንዴት እዚህ የህይወት ደረጃ ላይ እንደደረስኩ።

እኛ ወደፊት የሳይንስ ሊቃውንት ከወጣትነት ጅልነታችን የተነሳ ኮድን እንደ እሳት ከመጻፍ ተቆጥበናል ማለት አያስፈልግም። እዚህ፣ ለምሳሌ፣ Simulink from MathWorks፡ እዚ ብሎኮች፣ እዚህ ግንኙነቶቹ፣ እዚህ ሁሉም አይነት መቼቶች እና መቀየሪያዎች አሉ።

ቀደም ሲል በወረዳ ዲዛይን እና ሲስተም ኢንጂነሪንግ ውስጥ ለሰራ ሰው ቤተኛ እና ሊረዳ የሚችል እይታ!

“ከተዛማጅ ስፔሻሊስቶች ለጀማሪ ፕሮግራም አውጪዎች ማኒፌስቶ” ወይም እንዴት እዚህ የህይወት ደረጃ ላይ እንደደረስኩ።
ምንጭ: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

ስለዚህ መሰለን…

እውነታ

በመጀመሪያው ሴሚስተር ከተከናወኑት ተግባራዊ ስራዎች አንዱ የኦፌዲኤም ሲግናል ትራንስሰተርን እንደ "ሞዴሊንግ እና ማሻሻያ ዘዴዎች" የርእሰ ጉዳይ አካል አድርጎ ማዘጋጀት ነው። ሀሳቡ በጣም ስኬታማ ነው-ቴክኖሎጅው አሁንም ጠቃሚ እና በጣም ታዋቂ ነው በአጠቃቀሙ ምክንያት ለምሳሌ በ Wi-Fi እና LTE/LTE-A አውታረ መረቦች (በኦኤፍዲኤምኤ መልክ)። ይህ ጌቶች የቴሌኮም ስርዓቶችን በመቅረጽ ችሎታቸውን እንዲለማመዱ በጣም ጥሩው ነገር ነው።

“ከተዛማጅ ስፔሻሊስቶች ለጀማሪ ፕሮግራም አውጪዎች ማኒፌስቶ” ወይም እንዴት እዚህ የህይወት ደረጃ ላይ እንደደረስኩ።

እና አሁን ብዙ አማራጮችን ተሰጥቶናል ቴክኒካዊ ዝርዝሮች በግልጽ ተግባራዊ ሊሆኑ የማይችሉ የፍሬም መለኪያዎች (በበይነመረብ ላይ መፍትሄ ላለመፈለግ) እና ቀደም ሲል በተጠቀሰው ሲሙሊንክ ላይ እንወርዳለን ... እና ጭንቅላቱን በሻይ ማንኪያ እንመታለን። የእውነት፡

  • እያንዳንዱ እገዳ በብዙ የማይታወቁ መለኪያዎች የተሞላ ነው, ይህም በባርኔጣ ጠብታ ላይ ለመለወጥ አስፈሪ ነው.
  • ከቁጥሮች ጋር የተደረጉ ማጭበርበሮች መደረግ አለባቸው ፣ ቀላል ይመስላል ፣ ግን አሁንም መጮህ አለብዎት ፣ እግዚአብሔር ይጠብቀው።
  • ካቴድራል ማሽኖች ጂአይአይን በጋለ ስሜት ከመጠቀማቸው ፍጥነታቸውን እየቀነሱ ይገኛሉ፣ በብሎኮች ቤተ-መጻሕፍት ውስጥም እንኳ በሰርፊንግ ደረጃ ላይ ይገኛሉ።
  • ቤት ውስጥ የሆነ ነገር ለመጨረስ፣ ተመሳሳይ ሲሙሊንክ እንዲኖርዎት ያስፈልጋል። እና, በእውነቱ, ምንም አማራጮች የሉም.

አዎ ፣ በመጨረሻ ፣ በእርግጥ ፕሮጀክቱን አጠናቅቀናል ፣ ግን በከፍተኛ እፎይታ ጨርሰናል።

የተወሰነ ጊዜ አለፈ እና የማስተርስ ድግሪ የመጀመሪያ አመት መጨረሻ ላይ ደረስን። GUIsን በመጠቀም የቤት ስራው መጠን ከጀርመን ርዕሰ ጉዳዮች መጠን መጨመር ጋር በተመጣጣኝ ሁኔታ መውደቅ ጀመረ፣ ምንም እንኳን ገና ወደ ተምሳሌታዊ ለውጥ ደረጃ ላይ ባይደርስም። ብዙዎቻችን፣ እኔን ጨምሮ፣ ለመገንባት ያለንን ትልቅ ስፋት በማሸነፍ፣ በሳይንሳዊ ፕሮጀክቶቻችን ውስጥ (ምንም እንኳን በመሳሪያ ሳጥኖች መልክ ቢሆንም) ማትላብን በብዛት እንጠቀማለን።

የጥርጣሬያችን ነጥብ ከሁለተኛ ዓመት ተማሪዎች የአንዱ ሀረግ ነበር (በዚያን ጊዜ ወደ ሩሲያ የተመለሱት)፡-

  • እርሳ፣ ቢያንስ ለስልጠና ቆይታ፣ ስለ Similink፣ MathCad እና ሌሎች ላብ ቪው - ከኮረብታው ላይ ሁሉም ነገር በMATLAB ውስጥ ተጽፏል፣ ማትላብ እራሱን ወይም ነፃውን “ስሪት” Octaveን በመጠቀም።

መግለጫው በከፊል እውነት ሆኖ ተገኝቷል፡ በኢልሜኑ ውስጥ በመሳሪያዎች ምርጫ ላይ የተፈጠረው አለመግባባትም ሙሉ በሙሉ እልባት አላገኘም። እውነት ነው፣ ምርጫው በአብዛኛው በMATLAB፣ Python እና C መካከል ነበር።

በዚያው ቀን፣ በተፈጥሮ ደስታ ተወሰድኩ፡ የኦፌዴን አስተላላፊ ሞዴል ክፍልዬን ወደ ስክሪፕት ቅፅ ማስተላለፍ የለብኝምን? ለፈገግታ.

እና ወደ ሥራ ገባሁ.

ደረጃ በደረጃ

ከቲዎሬቲክ ስሌቶች ይልቅ, በቀላሉ ለዚህ አገናኝ እሰጣለሁ በጣም ጥሩ ጽሑፍ 2011 ከ tgx እና በስላይድ ላይ LTE አካላዊ ንብርብር ፕሮፌሰሮች ሚሼል-ቲላ (TU Ilmenau) ይህ በቂ ይሆናል ብዬ አስባለሁ.

“ታዲያ፣ እንድገመው፣ ምን ሞዴል እንሰራለን?” ብዬ አሰብኩ።
ሞዴል እናደርጋለን የኦፌዴን ፍሬም ጀነሬተር (OFDM ፍሬም ጄኔሬተር)።

ምንን ይጨምራል፡-

  • የመረጃ ምልክቶች
  • አብራሪ ምልክቶች
  • ዜሮዎች (ዲሲ)

ከምን (ለቀላልነት) የምንጠቅሰው፡-

  • ሳይክሊክ ቅድመ ቅጥያ ከመቅረጽ (መሰረታዊውን ካወቁ ማከል አስቸጋሪ አይሆንም)

“ከተዛማጅ ስፔሻሊስቶች ለጀማሪ ፕሮግራም አውጪዎች ማኒፌስቶ” ወይም እንዴት እዚህ የህይወት ደረጃ ላይ እንደደረስኩ።

ከግምት ውስጥ በማስገባት የአምሳያው ንድፍ አግድ. በተገላቢጦሽ FFT (IFFT) ብሎክ ላይ እናቆማለን። ምስሉን ለማጠናቀቅ, ሁሉም ሰው የቀረውን እራሱ መቀጠል ይችላል - ከመምሪያው መምህራን ለተማሪዎቹ አንድ ነገር እንዲተዉ ቃል ገባሁ.

እነዚያን ለራሳችን እንገልጻቸው። የአካል ብቃት እንቅስቃሴ

  • የንዑስ ተሸካሚዎች ቋሚ ቁጥር;
  • ቋሚ የክፈፍ ርዝመት;
  • በክፈፉ መጀመሪያ እና መጨረሻ ላይ አንድ ዜሮን እና ጥንድ ዜሮዎችን መጨመር አለብን (ጠቅላላ ፣ 5 ቁርጥራጮች)።
  • የመረጃ ምልክቶች የሚስተካከሉት M-PSK ወይም M-QAMን በመጠቀም ነው፣ ኤም የማሻሻያ ቅደም ተከተል ነው።

በኮዱ እንጀምር።

መላው ስክሪፕት ከ ማውረድ ይችላል። ማያያዣ.

የግቤት መለኪያዎችን እንግለጽ፡-

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;

ከዚያም አቀማመጦቹን ተግባሩን በመጠቀም ሊወሰኑ ይችላሉ linspaceእሴቶቹን ወደ ትንሹ የቅርቡ ኢንቲጀር በመቀነስ፡-

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

"ደስታ!" - በረካታ አሰብኩና ላፕቶፑን ዘጋሁት። ሁሉንም ነገር ለመስራት ሁለት ሰአታት ወስዶብኛል፡ ኮድ መጻፍን ጨምሮ፣ አንዳንድ የማትላብ ተግባራትን መማር እና በሂሳብ ዘዴዎች ማሰብን ጨምሮ።

ያኔ ምን መደምደሚያ ላይ ደረስኩ?

ርዕሰ ጉዳይ:

  • ኮድ መጻፍ አስደሳች እና ከግጥም ጋር ተመሳሳይ ነው!
  • ስክሪፕት ማድረግ ለግንኙነት እና ለሲግናል ሂደት በጣም ምቹ የምርምር ዘዴ ነው።

ዓላማ:

  • ድንቢጦችን ከመድፍ መተኮስ አያስፈልግም (እንዲህ አይነት ትምህርታዊ ግብ ካልሆነ በስተቀር)፡ ሲሙሊንክን በመጠቀም በተራቀቀ መሳሪያ ቀላል ችግር መፍታት ጀመርን።
  • GUI ጥሩ ነው፣ ነገር ግን “ከኮፈኑ ስር” ያለውን ነገር መረዳቱ የተሻለ ነው።

እና አሁን፣ ከተማሪነት በጣም የራቀ በመሆኔ፣ ለተማሪ ወንድማማችነት የሚከተለውን ማለት እፈልጋለሁ።

  • እሱን ለማግኘት ይሂዱ!

መጀመሪያ ላይ መጥፎ ቢሆንም ኮድ ለመጻፍ ይሞክሩ። በፕሮግራም አወጣጥ፣ ልክ እንደሌሎች እንቅስቃሴዎች፣ በጣም አስቸጋሪው ክፍል ጅምር ነው። እና ቀደም ብሎ መጀመር ይሻላል: እርስዎ ሳይንቲስት ከሆኑ ወይም ቴክኒሻን ብቻ ከሆኑ, ይዋል ይደር እንጂ ይህን ችሎታ ያስፈልግዎታል.

  • ፍላጎት!

ከአስተማሪዎችና ከተቆጣጣሪዎች ተራማጅ አቀራረቦችን እና መሳሪያዎችን ጠይቅ። ይህ የሚቻል ከሆነ በእርግጥ...

  • ፍጠር!

በትምህርት ፕሮግራም ማዕቀፍ ውስጥ ካልሆነ የጀማሪውን ቁስሎች ሁሉ ማሸነፍ የተሻለ የት ነው? ችሎታዎን ይፍጠሩ እና ያሻሽሉ - እንደገና ፣ በቶሎ ሲጀምሩ ፣ የተሻለ ይሆናል።

የሁሉም ሀገራት ፍላጎት ያላቸው ፕሮግራመሮች፣ አንድ ይሁኑ!

PS

ከተማሪዎች ጋር ያለኝን ቀጥተኛ ግንኙነት ለመመዝገብ የ 2017 የማይረሳ ፎቶ ከሁለት ሬክተሮች ጋር አያይዤያለሁ፡- ፒተር ሻርፍ (በስተቀኝ) እና አልበርት ካሪሶቪች ጊልሙትዲኖቭ (በስተግራ)።

“ከተዛማጅ ስፔሻሊስቶች ለጀማሪ ፕሮግራም አውጪዎች ማኒፌስቶ” ወይም እንዴት እዚህ የህይወት ደረጃ ላይ እንደደረስኩ።

ቢያንስ ለእነዚህ አልባሳት ፕሮግራሙን መጨረስ ተገቢ ነበር! (መቀለድ)

ምንጭ: hab.com

አስተያየት ያክሉ