"தொடர்புடைய சிறப்புகளில் இருந்து புரோகிராமர்களைத் தொடங்குவதற்கான அறிக்கை" அல்லது நான் வாழ்க்கையில் இந்த நிலைக்கு எப்படி வந்தேன்

இன்றைய எனது கட்டுரையானது, கிட்டத்தட்ட தற்செயலாக (இயற்கையாக இருந்தாலும்) நிரலாக்கத்தின் பாதையை எடுத்த ஒருவரிடமிருந்து உரத்த சிந்தனைகள்.

ஆம், எனது அனுபவம் எனது அனுபவம் மட்டுமே என்பதை நான் புரிந்துகொள்கிறேன், ஆனால் இது பொதுவான போக்குக்கு நன்றாகப் பொருந்துவதாக எனக்குத் தோன்றுகிறது. மேலும், கீழே விவரிக்கப்பட்டுள்ள அனுபவம் விஞ்ஞான நடவடிக்கைகளின் துறையுடன் தொடர்புடையது, ஆனால் நரகம் வேடிக்கையாக இல்லை - அது வெளியே பயனுள்ளதாக இருக்கும்.

"தொடர்புடைய சிறப்புகளில் இருந்து புரோகிராமர்களைத் தொடங்குவதற்கான அறிக்கை" அல்லது நான் வாழ்க்கையில் இந்த நிலைக்கு எப்படி வந்தேன்
ஆதாரம்: https://xkcd.com/664/

பொதுவாக, முன்னாள் மாணவர் முதல் தற்போதைய அனைத்து மாணவர்களுக்கும் அர்ப்பணிக்கப்பட்டுள்ளது!

எதிர்பார்ப்புகள்

நான் 2014 இல் இன்போகம்யூனிகேஷன் டெக்னாலஜிஸ் மற்றும் கம்யூனிகேஷன் சிஸ்டம்ஸ் ஆகியவற்றில் இளங்கலை பட்டப்படிப்பை முடித்தபோது, ​​நிரலாக்க உலகம் பற்றி எனக்கு எதுவும் தெரியாது. ஆம், பலரைப் போலவே நானும் எனது முதல் ஆண்டில் “கம்ப்யூட்டர் சயின்ஸ்” பாடத்தை எடுத்தேன் - ஆனால், ஆண்டவரே, அது எனது முதல் ஆண்டில்தான்! இது ஒரு நித்தியம்!

பொதுவாக, இளங்கலைப் பட்டப்படிப்பிலிருந்து வித்தியாசமான எதையும் நான் எதிர்பார்க்கவில்லை, நான் முதுகலை திட்டத்தில் நுழைந்தபோது "தொடர்பு மற்றும் சமிக்ஞை செயலாக்கம்" ஜெர்மன்-ரஷியன் இன்ஸ்டிடியூட் ஆப் நியூ டெக்னாலஜிஸ்.

ஆனால் வீண்...

நாங்கள் இரண்டாவது உட்கொள்ளல் மட்டுமே, மற்றும் முதல் தோழர்கள் இன்னும் தொலைதூர ஜெர்மனியில் தங்கள் பைகளை பேக் செய்து கொண்டிருந்தனர் (இன்டர்ன்ஷிப் முதுகலை பட்டத்தின் இரண்டாம் ஆண்டில் ஆறு மாதங்கள் ஆகும்). வேறு வார்த்தைகளில் கூறுவதானால், உடனடி வட்டத்தில் இருந்து யாரும் ஐரோப்பிய கல்வியின் முறைகளை இன்னும் தீவிரமாக எதிர்கொள்ளவில்லை, மேலும் விவரங்களைப் பற்றி கேட்க யாரும் இல்லை.

எங்கள் முதல் ஆண்டில், நிச்சயமாக, எங்களிடம் பல்வேறு வகையான நடைமுறைகள் இருந்தன, அதில் ஸ்கிரிப்ட்களை எழுதுவதற்கும் (முக்கியமாக MATLAB மொழியில்) மற்றும் பல்வேறு சிறப்பு வாய்ந்த GUI களைப் பயன்படுத்துவதற்கும் (ஸ்கிரிப்ட்களை எழுதாமல் - உருவகப்படுத்துதல் என்ற அர்த்தத்தில்) ஜனநாயக ரீதியாக நாங்கள் தேர்வு செய்தோம். மாடலிங் சூழல்கள்).

"தொடர்புடைய சிறப்புகளில் இருந்து புரோகிராமர்களைத் தொடங்குவதற்கான அறிக்கை" அல்லது நான் வாழ்க்கையில் இந்த நிலைக்கு எப்படி வந்தேன்

வருங்கால அறிவியல் மாஸ்டர்களான நாங்கள், நமது இளமைக்கால முட்டாள்தனத்தால், நெருப்பு போன்ற குறியீடுகளை எழுதுவதைத் தவிர்த்தோம் என்று சொல்லத் தேவையில்லை. இங்கே இது, எடுத்துக்காட்டாக, MathWorks இலிருந்து Simulink: இங்கே தொகுதிகள் உள்ளன, இங்கே இணைப்புகள் உள்ளன, இங்கே அனைத்து வகையான அமைப்புகள் மற்றும் சுவிட்சுகள் உள்ளன.

முன்பு சர்க்யூட் டிசைன் மற்றும் சிஸ்டம்ஸ் இன்ஜினியரிங்கில் பணியாற்றிய ஒருவருக்கு பூர்வீகமாகவும் புரிந்துகொள்ளக்கூடியதாகவும் இருக்கும் ஒரு பார்வை!

"தொடர்புடைய சிறப்புகளில் இருந்து புரோகிராமர்களைத் தொடங்குவதற்கான அறிக்கை" அல்லது நான் வாழ்க்கையில் இந்த நிலைக்கு எப்படி வந்தேன்
ஆதாரம்: 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 அல்ல.

எங்கள் சந்தேகத்தின் முக்கிய விஷயம் இரண்டாம் ஆண்டு மாணவர்களில் ஒருவரின் சொற்றொடர் (அந்த நேரத்தில் அவர்கள் ரஷ்யாவுக்குத் திரும்பினர்):

  • சிமிலிங்க், மேத்கேட் மற்றும் பிற லேப்வியூ பற்றி, குறைந்தபட்சம் இன்டர்ன்ஷிப் காலத்திற்காவது மறந்துவிடுங்கள் - மலையின் மேல் அனைத்தும் மேட்லாப்பில் எழுதப்பட்டவை, மேட்லாப் அல்லது அதன் இலவச "பதிப்பு" ஆக்டேவ்.

அறிக்கை ஓரளவு உண்மையாக மாறியது: இல்மெனாவில், கருவிகளைத் தேர்ந்தெடுப்பது குறித்த சர்ச்சையும் முழுமையாக தீர்க்கப்படவில்லை. உண்மை, தேர்வு பெரும்பாலும் MATLAB, Python மற்றும் C ஆகியவற்றுக்கு இடையே இருந்தது.

அதே நாளில், நான் ஒரு இயற்கையான உற்சாகத்தால் ஈர்க்கப்பட்டேன்: OFDM டிரான்ஸ்மிட்டர் மாதிரியின் எனது பகுதியை ஸ்கிரிப்ட் வடிவத்திற்கு மாற்ற வேண்டாமா? வேடிக்கைக்காகத்தான்.

மற்றும் நான் வேலை செய்ய வேண்டும்.

படி படியாக

கோட்பாட்டு கணக்கீடுகளுக்கு பதிலாக, நான் இதற்கான இணைப்பை வெறுமனே தருகிறேன் சிறந்த கட்டுரை 2011 முதல் tgx மற்றும் ஸ்லைடுகளில் LTE உடல் அடுக்கு பேராசிரியர்கள் மைக்கேல்-திலா (TU இல்மெனாவ்). இது போதும் என்று நினைக்கிறேன்.

"அப்படியானால்," நான் நினைத்தேன், "மீண்டும் சொல்லுவோம், நாம் என்ன மாதிரியாக இருக்கப் போகிறோம்?"
நாங்கள் மாதிரியாக இருப்போம் 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

"ஆனந்தம்!" - நான் திருப்தியுடன் யோசித்து மடிக்கணினியை மூடினேன். குறியீட்டை எழுதுவது, சில மேட்லாப் செயல்பாடுகளைக் கற்றுக்கொள்வது மற்றும் கணித தந்திரங்கள் மூலம் சிந்திப்பது உட்பட எல்லாவற்றையும் செய்ய எனக்கு இரண்டு மணிநேரம் ஆனது.

அப்போது நான் என்ன முடிவுகளை எடுத்தேன்?

அகநிலை:

  • எழுதும் குறியீடு இனிமையானது மற்றும் கவிதைக்கு நிகரானது!
  • ஸ்கிரிப்டிங் என்பது தொடர்பு மற்றும் சிக்னல் செயலாக்கத் துறைக்கு மிகவும் வசதியான ஆராய்ச்சி முறையாகும்.

குறிக்கோள்:

  • ஒரு பீரங்கியில் இருந்து சிட்டுக்குருவிகள் சுட வேண்டிய அவசியமில்லை (அத்தகைய கல்வி இலக்கு, நிச்சயமாக, அது மதிப்புக்குரியது): Simulink ஐப் பயன்படுத்தி, ஒரு அதிநவீன கருவி மூலம் ஒரு எளிய சிக்கலைத் தீர்ப்பதை நாங்கள் எடுத்தோம்.
  • GUI நன்றாக உள்ளது, ஆனால் "ஹூட்டின் கீழ்" என்ன உள்ளது என்பதைப் புரிந்துகொள்வது சிறந்தது.

இப்போது, ​​ஒரு மாணவராக இருந்து வெகு தொலைவில் இருப்பதால், மாணவர் சகோதரத்துவத்திற்கு பின்வருவனவற்றைச் சொல்ல விரும்புகிறேன்:

  • அது போக!

முதலில் மோசமாக இருந்தாலும் குறியீட்டை எழுத முயற்சிக்கவும். நிரலாக்கத்துடன், மற்ற செயல்பாடுகளைப் போலவே, கடினமான பகுதி ஆரம்பம். முன்கூட்டியே தொடங்குவது நல்லது: நீங்கள் ஒரு விஞ்ஞானி அல்லது ஒரு தொழில்நுட்ப வல்லுநராக இருந்தால், விரைவில் அல்லது பின்னர் உங்களுக்கு இந்த திறன் தேவைப்படும்.

  • கோரிக்கை!

ஆசிரியர்கள் மற்றும் மேற்பார்வையாளர்களிடமிருந்து முற்போக்கான அணுகுமுறைகள் மற்றும் கருவிகளைக் கோருங்கள். இது சாத்தியமானால், நிச்சயமாக ...

  • உருவாக்கு!

ஒரு கல்வித் திட்டத்தின் கட்டமைப்பிற்குள் இல்லாவிட்டால், ஒரு தொடக்கக்காரரின் அனைத்து புண்களையும் போக்க வேறு எங்கு சிறந்தது? உங்கள் திறமைகளை உருவாக்கி மேம்படுத்தவும் - மீண்டும், விரைவில் நீங்கள் தொடங்கினால், சிறந்தது.

அனைத்து நாடுகளிலிருந்தும் ஆர்வமுள்ள புரோகிராமர்களே, ஒன்றுபடுங்கள்!

சோசலிஸ்ட் கட்சி

மாணவர்களுடனான எனது நேரடி உறவைப் பதிவுசெய்வதற்காக, பீட்டர் ஷார்ஃப் (வலதுபுறம்) மற்றும் ஆல்பர்ட் கரிசோவிச் கில்முட்டினோவ் (இடதுபுறம்) ஆகிய இரண்டு ரெக்டர்களுடன் 2017 இன் மறக்கமுடியாத புகைப்படத்தை இணைக்கிறேன்.

"தொடர்புடைய சிறப்புகளில் இருந்து புரோகிராமர்களைத் தொடங்குவதற்கான அறிக்கை" அல்லது நான் வாழ்க்கையில் இந்த நிலைக்கு எப்படி வந்தேன்

குறைந்தபட்சம் இந்த ஆடைகளுக்கு நிரலை முடிக்க வேண்டியது அவசியம்! (விளையாடினேன்)

ஆதாரம்: www.habr.com

கருத்தைச் சேர்