"ಸಂಬಂಧಿತ ವಿಶೇಷತೆಗಳಿಂದ ಪ್ರೋಗ್ರಾಮರ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮ್ಯಾನಿಫೆಸ್ಟೋ" ಅಥವಾ ನಾನು ಜೀವನದಲ್ಲಿ ಈ ಹಂತಕ್ಕೆ ಹೇಗೆ ಬಂದೆ

ನನ್ನ ಇಂದಿನ ಲೇಖನವು ಆಕಸ್ಮಿಕವಾಗಿ (ನೈಸರ್ಗಿಕವಾಗಿಯಾದರೂ) ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಹಾದಿಯನ್ನು ಹಿಡಿದ ವ್ಯಕ್ತಿಯಿಂದ ಜೋರಾಗಿ ಆಲೋಚನೆಗಳು.

ಹೌದು, ನನ್ನ ಅನುಭವ ಕೇವಲ ನನ್ನ ಅನುಭವ ಎಂದು ನಾನು ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೇನೆ, ಆದರೆ ಇದು ಸಾಮಾನ್ಯ ಪ್ರವೃತ್ತಿಗೆ ಚೆನ್ನಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ನನಗೆ ತೋರುತ್ತದೆ. ಇದಲ್ಲದೆ, ಕೆಳಗೆ ವಿವರಿಸಿದ ಅನುಭವವು ವೈಜ್ಞಾನಿಕ ಚಟುವಟಿಕೆಯ ಕ್ಷೇತ್ರಕ್ಕೆ ಹೆಚ್ಚು ಸಂಬಂಧಿಸಿದೆ, ಆದರೆ ನರಕವು ತಮಾಷೆಯಾಗಿಲ್ಲ - ಇದು ಹೊರಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ.

"ಸಂಬಂಧಿತ ವಿಶೇಷತೆಗಳಿಂದ ಪ್ರೋಗ್ರಾಮರ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮ್ಯಾನಿಫೆಸ್ಟೋ" ಅಥವಾ ನಾನು ಜೀವನದಲ್ಲಿ ಈ ಹಂತಕ್ಕೆ ಹೇಗೆ ಬಂದೆ
ಮೂಲ: https://xkcd.com/664/

ಸಾಮಾನ್ಯವಾಗಿ, ಹಿಂದಿನ ವಿದ್ಯಾರ್ಥಿಯಿಂದ ಎಲ್ಲಾ ಪ್ರಸ್ತುತ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ಸಮರ್ಪಿಸಲಾಗಿದೆ!

ನಿರೀಕ್ಷೆಗಳು

ನಾನು 2014 ರಲ್ಲಿ ಇನ್ಫೋಕಮ್ಯುನಿಕೇಶನ್ ಟೆಕ್ನಾಲಜೀಸ್ ಮತ್ತು ಕಮ್ಯುನಿಕೇಷನ್ ಸಿಸ್ಟಮ್ಸ್‌ನಲ್ಲಿ ನನ್ನ ಸ್ನಾತಕೋತ್ತರ ಪದವಿಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದಾಗ, ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪ್ರಪಂಚದ ಬಗ್ಗೆ ನನಗೆ ಏನೂ ತಿಳಿದಿರಲಿಲ್ಲ. ಹೌದು, ಇತರರಂತೆ, ನಾನು ನನ್ನ ಮೊದಲ ವರ್ಷದಲ್ಲಿ “ಕಂಪ್ಯೂಟರ್ ಸೈನ್ಸ್” ವಿಷಯವನ್ನು ತೆಗೆದುಕೊಂಡೆ - ಆದರೆ, ಪ್ರಭು, ಅದು ನನ್ನ ಮೊದಲ ವರ್ಷದಲ್ಲಿ! ಇದು ಶಾಶ್ವತತೆ!

ಸಾಮಾನ್ಯವಾಗಿ, ನಾನು ಸ್ನಾತಕೋತ್ತರ ಪದವಿಗಿಂತ ನಿರ್ದಿಷ್ಟವಾಗಿ ಏನನ್ನೂ ನಿರೀಕ್ಷಿಸಲಿಲ್ಲ, ಮತ್ತು ನಾನು ಸ್ನಾತಕೋತ್ತರ ಕಾರ್ಯಕ್ರಮಕ್ಕೆ ಪ್ರವೇಶಿಸಿದಾಗ "ಸಂವಹನ ಮತ್ತು ಸಿಗ್ನಲ್ ಪ್ರಕ್ರಿಯೆ" ಜರ್ಮನ್-ರಷ್ಯನ್ ಇನ್ಸ್ಟಿಟ್ಯೂಟ್ ಆಫ್ ನ್ಯೂ ಟೆಕ್ನಾಲಜೀಸ್.

ಆದರೆ ವ್ಯರ್ಥ...

ನಾವು ಕೇವಲ ಎರಡನೆಯವರಾಗಿದ್ದೇವೆ ಮತ್ತು ಮೊದಲನೆಯ ಹುಡುಗರು ಇನ್ನೂ ದೂರದ ಜರ್ಮನಿಗೆ ತಮ್ಮ ಚೀಲಗಳನ್ನು ಪ್ಯಾಕ್ ಮಾಡುತ್ತಿದ್ದರು (ಇಂಟರ್ನ್‌ಶಿಪ್ ಸ್ನಾತಕೋತ್ತರ ಪದವಿಯ ಎರಡನೇ ವರ್ಷದಲ್ಲಿ ಆರು ತಿಂಗಳುಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ). ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ನಿಕಟ ವಲಯದಿಂದ ಯಾರೂ ಇನ್ನೂ ಯುರೋಪಿಯನ್ ಶಿಕ್ಷಣದ ವಿಧಾನಗಳನ್ನು ಗಂಭೀರವಾಗಿ ಎದುರಿಸಲಿಲ್ಲ ಮತ್ತು ವಿವರಗಳ ಬಗ್ಗೆ ಕೇಳಲು ಯಾರೂ ಇರಲಿಲ್ಲ.

ನಮ್ಮ ಮೊದಲ ವರ್ಷದಲ್ಲಿ, ಸಹಜವಾಗಿ, ನಾವು ವಿವಿಧ ರೀತಿಯ ಅಭ್ಯಾಸಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಇದರಲ್ಲಿ ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರಜಾಸತ್ತಾತ್ಮಕವಾಗಿ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬರೆಯುವ (ಮುಖ್ಯವಾಗಿ MATLAB ಭಾಷೆಯಲ್ಲಿ) ಮತ್ತು ವಿವಿಧ ಹೆಚ್ಚು ವಿಶೇಷವಾದ GUI ಗಳನ್ನು (ಅರ್ಥದಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬರೆಯದೆ - ಸಿಮ್ಯುಲೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಮಾಡೆಲಿಂಗ್ ಪರಿಸರಗಳು).

"ಸಂಬಂಧಿತ ವಿಶೇಷತೆಗಳಿಂದ ಪ್ರೋಗ್ರಾಮರ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮ್ಯಾನಿಫೆಸ್ಟೋ" ಅಥವಾ ನಾನು ಜೀವನದಲ್ಲಿ ಈ ಹಂತಕ್ಕೆ ಹೇಗೆ ಬಂದೆ

ನಾವು, ಭವಿಷ್ಯದ ವಿಜ್ಞಾನದ ಮಾಸ್ಟರ್ಸ್, ನಮ್ಮ ಯೌವನದ ಮೂರ್ಖತನದಿಂದ, ಬೆಂಕಿಯಂತೆ ಕೋಡ್ ಬರೆಯುವುದನ್ನು ತಪ್ಪಿಸಿದ್ದೇವೆ ಎಂದು ಹೇಳಬೇಕಾಗಿಲ್ಲ. ಇಲ್ಲಿ, ಉದಾಹರಣೆಗೆ, ಮ್ಯಾಥ್‌ವರ್ಕ್ಸ್‌ನಿಂದ ಸಿಮುಲಿಂಕ್ ಆಗಿದೆ: ಇಲ್ಲಿ ಬ್ಲಾಕ್‌ಗಳು, ಇಲ್ಲಿ ಸಂಪರ್ಕಗಳು, ಇಲ್ಲಿ ಎಲ್ಲಾ ರೀತಿಯ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಸ್ವಿಚ್‌ಗಳು.

ಈ ಹಿಂದೆ ಸರ್ಕ್ಯೂಟ್ ವಿನ್ಯಾಸ ಮತ್ತು ಸಿಸ್ಟಮ್ಸ್ ಎಂಜಿನಿಯರಿಂಗ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಿದ ವ್ಯಕ್ತಿಗೆ ಸ್ಥಳೀಯ ಮತ್ತು ಅರ್ಥವಾಗುವಂತಹ ನೋಟ!

"ಸಂಬಂಧಿತ ವಿಶೇಷತೆಗಳಿಂದ ಪ್ರೋಗ್ರಾಮರ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮ್ಯಾನಿಫೆಸ್ಟೋ" ಅಥವಾ ನಾನು ಜೀವನದಲ್ಲಿ ಈ ಹಂತಕ್ಕೆ ಹೇಗೆ ಬಂದೆ
ಮೂಲ: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

ಆದ್ದರಿಂದ ಅದು ನಮಗೆ ತೋರುತ್ತದೆ ...

ರಿಯಾಲಿಟಿ

ಮೊದಲ ಸೆಮಿಸ್ಟರ್‌ನ ಪ್ರಾಯೋಗಿಕ ಕೆಲಸವೆಂದರೆ "ಮಾಡೆಲಿಂಗ್ ಮತ್ತು ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಾಗಿ ವಿಧಾನಗಳು" ವಿಷಯದ ಭಾಗವಾಗಿ OFDM ಸಿಗ್ನಲ್ ಟ್ರಾನ್ಸ್‌ಸಿವರ್‌ನ ಅಭಿವೃದ್ಧಿಯಾಗಿದೆ. ಕಲ್ಪನೆಯು ಬಹಳ ಯಶಸ್ವಿಯಾಗಿದೆ: ತಂತ್ರಜ್ಞಾನವು ಇನ್ನೂ ಪ್ರಸ್ತುತವಾಗಿದೆ ಮತ್ತು ಅದರ ಬಳಕೆಯಿಂದಾಗಿ ಸಾಕಷ್ಟು ಜನಪ್ರಿಯವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, Wi-Fi ಮತ್ತು LTE / LTE-A ನೆಟ್ವರ್ಕ್ಗಳಲ್ಲಿ (OFDMA ರೂಪದಲ್ಲಿ). ಮಾಡೆಲಿಂಗ್ ಟೆಲಿಕಾಂ ಸಿಸ್ಟಮ್‌ಗಳಲ್ಲಿ ಮಾಸ್ಟರ್‌ಗಳು ತಮ್ಮ ಕೌಶಲ್ಯಗಳನ್ನು ಅಭ್ಯಾಸ ಮಾಡಲು ಇದು ಉತ್ತಮ ವಿಷಯವಾಗಿದೆ.

"ಸಂಬಂಧಿತ ವಿಶೇಷತೆಗಳಿಂದ ಪ್ರೋಗ್ರಾಮರ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮ್ಯಾನಿಫೆಸ್ಟೋ" ಅಥವಾ ನಾನು ಜೀವನದಲ್ಲಿ ಈ ಹಂತಕ್ಕೆ ಹೇಗೆ ಬಂದೆ

ಮತ್ತು ಈಗ ನಮಗೆ ನಿಸ್ಸಂಶಯವಾಗಿ ಅಪ್ರಾಯೋಗಿಕ ಫ್ರೇಮ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳೊಂದಿಗೆ ತಾಂತ್ರಿಕ ವಿಶೇಷಣಗಳ ಹಲವಾರು ಆಯ್ಕೆಗಳನ್ನು ನೀಡಲಾಗಿದೆ (ಇಂಟರ್‌ನೆಟ್‌ನಲ್ಲಿ ಪರಿಹಾರವನ್ನು ಹುಡುಕದಿರಲು), ಮತ್ತು ನಾವು ಈಗಾಗಲೇ ಉಲ್ಲೇಖಿಸಿರುವ ಸಿಮುಲಿಂಕ್ ಮೇಲೆ ಧುಮುಕುತ್ತೇವೆ ... ಮತ್ತು ನಾವು ಟೀಪಾಟ್‌ನಿಂದ ತಲೆಯ ಮೇಲೆ ಹೊಡೆಯುತ್ತೇವೆ ವಾಸ್ತವದ:

  • ಪ್ರತಿಯೊಂದು ಬ್ಲಾಕ್ ಬಹಳಷ್ಟು ಅಪರಿಚಿತ ನಿಯತಾಂಕಗಳಿಂದ ತುಂಬಿರುತ್ತದೆ, ಇದು ಹ್ಯಾಟ್ನ ಡ್ರಾಪ್ನಲ್ಲಿ ಬದಲಾಯಿಸಲು ಹೆದರಿಕೆಯೆ.
  • ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್ಗಳನ್ನು ಮಾಡಬೇಕಾಗಿದೆ, ಅದು ತೋರುತ್ತದೆ, ಸರಳವಾಗಿದೆ, ಆದರೆ ನೀವು ಇನ್ನೂ ಗಡಿಬಿಡಿಯಾಗಬೇಕು, ದೇವರು ನಿಷೇಧಿಸುತ್ತಾನೆ.
  • ಕ್ಯಾಥೆಡ್ರಲ್ ಯಂತ್ರಗಳು GUI ಯ ಉದ್ರಿಕ್ತ ಬಳಕೆಯಿಂದ ಗಮನಾರ್ಹವಾಗಿ ನಿಧಾನವಾಗುತ್ತವೆ, ಲಭ್ಯವಿರುವ ಬ್ಲಾಕ್‌ಗಳ ಲೈಬ್ರರಿಗಳ ಮೂಲಕ ಸರ್ಫಿಂಗ್ ಮಾಡುವ ಹಂತದಲ್ಲಿಯೂ ಸಹ.
  • ಮನೆಯಲ್ಲಿ ಏನನ್ನಾದರೂ ಮುಗಿಸಲು, ನೀವು ಅದೇ ಸಿಮುಲಿಂಕ್ ಅನ್ನು ಹೊಂದಿರಬೇಕು. ಮತ್ತು, ವಾಸ್ತವವಾಗಿ, ಯಾವುದೇ ಪರ್ಯಾಯಗಳಿಲ್ಲ.

ಹೌದು, ಕೊನೆಯಲ್ಲಿ ನಾವು ಯೋಜನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೇವೆ, ಆದರೆ ನಾವು ಅದನ್ನು ಜೋರಾಗಿ ಬಿಡುಗಡೆ ಮಾಡುವುದರೊಂದಿಗೆ ಪೂರ್ಣಗೊಳಿಸಿದ್ದೇವೆ.

ಸ್ವಲ್ಪ ಸಮಯ ಕಳೆದಿತು, ಮತ್ತು ನಾವು ಸ್ನಾತಕೋತ್ತರ ಪದವಿಯ ಮೊದಲ ವರ್ಷದ ಅಂತ್ಯಕ್ಕೆ ಬಂದೆವು. GUI ಗಳನ್ನು ಬಳಸುವ ಹೋಮ್‌ವರ್ಕ್ ಪ್ರಮಾಣವು ಜರ್ಮನ್ ವಿಷಯಗಳ ಅನುಪಾತದ ಹೆಚ್ಚಳದೊಂದಿಗೆ ಪ್ರಮಾಣಾನುಗುಣವಾಗಿ ಕುಸಿಯಲು ಪ್ರಾರಂಭಿಸಿತು, ಆದರೂ ಇದು ಇನ್ನೂ ಮಾದರಿ ಬದಲಾವಣೆಯ ಹಂತವನ್ನು ತಲುಪಿಲ್ಲ. ನನ್ನನ್ನೂ ಒಳಗೊಂಡಂತೆ ನಮ್ಮಲ್ಲಿ ಅನೇಕರು, ನಿರ್ಮಿಸಲು ನಮ್ಮ ಗಣನೀಯ ವೈಶಾಲ್ಯವನ್ನು ಮೀರಿಸಿ, ನಮ್ಮ ವೈಜ್ಞಾನಿಕ ಯೋಜನೆಗಳಲ್ಲಿ (ಟೂಲ್‌ಬಾಕ್ಸ್‌ಗಳ ರೂಪದಲ್ಲಿ ಆದರೂ) ಹೆಚ್ಚು ಹೆಚ್ಚು Matlab ಅನ್ನು ಬಳಸುತ್ತಾರೆ ಮತ್ತು ತೋರಿಕೆಯಲ್ಲಿ ಪರಿಚಿತ ಸಿಮುಲಿಂಕ್ ಅಲ್ಲ.

ನಮ್ಮ ಅನುಮಾನಗಳ ಅಂಶವೆಂದರೆ ಎರಡನೇ ವರ್ಷದ ವಿದ್ಯಾರ್ಥಿಯೊಬ್ಬನ ನುಡಿಗಟ್ಟು (ಅವರು ಆ ಹೊತ್ತಿಗೆ ರಷ್ಯಾಕ್ಕೆ ಮರಳಿದ್ದರು):

  • ಕನಿಷ್ಠ ಇಂಟರ್ನ್‌ಶಿಪ್ ಅವಧಿಯವರೆಗೆ, ಸಿಮಿಲಿಂಕ್, ಮ್ಯಾಥ್‌ಕ್ಯಾಡ್ ಮತ್ತು ಇತರ ಲ್ಯಾಬ್‌ವ್ಯೂ ಬಗ್ಗೆ ಮರೆತುಬಿಡಿ - ಬೆಟ್ಟದ ಮೇಲೆ ಎಲ್ಲವನ್ನೂ ಮ್ಯಾಟ್‌ಲ್ಯಾಬ್‌ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ, ಮ್ಯಾಟ್‌ಲ್ಯಾಬ್ ಅಥವಾ ಅದರ ಉಚಿತ “ಆವೃತ್ತಿ” ಆಕ್ಟೇವ್ ಬಳಸಿ.

ಹೇಳಿಕೆಯು ಭಾಗಶಃ ನಿಜವೆಂದು ಬದಲಾಯಿತು: ಇಲ್ಮೆನೌನಲ್ಲಿ, ಪರಿಕರಗಳ ಆಯ್ಕೆಯ ವಿವಾದವನ್ನು ಸಹ ಸಂಪೂರ್ಣವಾಗಿ ಪರಿಹರಿಸಲಾಗಿಲ್ಲ. ನಿಜ, ಆಯ್ಕೆಯು ಹೆಚ್ಚಾಗಿ MATLAB, ಪೈಥಾನ್ ಮತ್ತು 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

"ಆನಂದ!" - ನಾನು ತೃಪ್ತಿಯಿಂದ ಯೋಚಿಸಿದೆ ಮತ್ತು ಲ್ಯಾಪ್ಟಾಪ್ ಅನ್ನು ಮುಚ್ಚಿದೆ. ಕೋಡ್ ಬರೆಯುವುದು, ಕೆಲವು ಮ್ಯಾಟ್‌ಲ್ಯಾಬ್ ಕಾರ್ಯಗಳನ್ನು ಕಲಿಯುವುದು ಮತ್ತು ಗಣಿತದ ತಂತ್ರಗಳ ಮೂಲಕ ಯೋಚಿಸುವುದು ಸೇರಿದಂತೆ ಎಲ್ಲವನ್ನೂ ಮಾಡಲು ನನಗೆ ಒಂದೆರಡು ಗಂಟೆಗಳು ಬೇಕಾಯಿತು.

ಆಗ ನಾನು ಯಾವ ತೀರ್ಮಾನಗಳನ್ನು ತೆಗೆದುಕೊಂಡೆ?

ವ್ಯಕ್ತಿನಿಷ್ಠ:

  • ಕೋಡ್ ಬರೆಯುವುದು ಆಹ್ಲಾದಕರ ಮತ್ತು ಕಾವ್ಯಕ್ಕೆ ಹೋಲುತ್ತದೆ!
  • ಸಂವಹನ ಮತ್ತು ಸಿಗ್ನಲ್ ಪ್ರೊಸೆಸಿಂಗ್ ಕ್ಷೇತ್ರಕ್ಕೆ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಅತ್ಯಂತ ಅನುಕೂಲಕರ ಸಂಶೋಧನಾ ವಿಧಾನವಾಗಿದೆ.

ಉದ್ದೇಶ:

  • ಫಿರಂಗಿಯಿಂದ ಗುಬ್ಬಚ್ಚಿಗಳನ್ನು ಶೂಟ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ (ಅಂತಹ ಶೈಕ್ಷಣಿಕ ಗುರಿಯು ಖಂಡಿತವಾಗಿಯೂ ಯೋಗ್ಯವಾಗಿಲ್ಲದಿದ್ದರೆ): ಸಿಮುಲಿಂಕ್ ಬಳಸಿ, ನಾವು ಅತ್ಯಾಧುನಿಕ ಸಾಧನದೊಂದಿಗೆ ಸರಳವಾದ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ತೆಗೆದುಕೊಂಡಿದ್ದೇವೆ.
  • GUI ಒಳ್ಳೆಯದು, ಆದರೆ "ಹುಡ್ ಅಡಿಯಲ್ಲಿ" ಏನಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಉತ್ತಮವಾಗಿದೆ.

ಮತ್ತು ಈಗ, ವಿದ್ಯಾರ್ಥಿಯಿಂದ ದೂರವಿರುವುದರಿಂದ, ನಾನು ವಿದ್ಯಾರ್ಥಿ ಭ್ರಾತೃತ್ವಕ್ಕೆ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಹೇಳಲು ಬಯಸುತ್ತೇನೆ:

  • ಡೇರ್!

ಕೋಡ್ ಬರೆಯಲು ಪ್ರಯತ್ನಿಸಿ, ಅದು ಮೊದಲಿಗೆ ಕೆಟ್ಟದಾಗಿದ್ದರೂ ಸಹ. ಪ್ರೋಗ್ರಾಮಿಂಗ್ನೊಂದಿಗೆ, ಯಾವುದೇ ಇತರ ಚಟುವಟಿಕೆಯಂತೆ, ಕಠಿಣ ಭಾಗವು ಪ್ರಾರಂಭವಾಗಿದೆ. ಮತ್ತು ಮೊದಲೇ ಪ್ರಾರಂಭಿಸುವುದು ಉತ್ತಮ: ನೀವು ವಿಜ್ಞಾನಿ ಅಥವಾ ಟೆಕ್ಕಿಯಾಗಿದ್ದರೆ, ಬೇಗ ಅಥವಾ ನಂತರ ನಿಮಗೆ ಈ ಕೌಶಲ್ಯ ಬೇಕಾಗುತ್ತದೆ.

  • ಬೇಡಿಕೆ!

ಶಿಕ್ಷಕರು ಮತ್ತು ಮೇಲ್ವಿಚಾರಕರಿಂದ ಪ್ರಗತಿಶೀಲ ವಿಧಾನಗಳು ಮತ್ತು ಸಾಧನಗಳನ್ನು ಬೇಡಿಕೆ. ಇದು ಸಾಧ್ಯವಾದರೆ, ಖಂಡಿತ...

  • ರಚಿಸಿ!

ಶೈಕ್ಷಣಿಕ ಕಾರ್ಯಕ್ರಮದ ಚೌಕಟ್ಟಿನೊಳಗೆ ಇಲ್ಲದಿದ್ದರೆ, ಹರಿಕಾರನ ಎಲ್ಲಾ ಹುಣ್ಣುಗಳನ್ನು ಪಡೆಯಲು ಬೇರೆಲ್ಲಿ ಉತ್ತಮವಾಗಿದೆ? ನಿಮ್ಮ ಕೌಶಲ್ಯಗಳನ್ನು ರಚಿಸಿ ಮತ್ತು ಅಭಿವೃದ್ಧಿಪಡಿಸಿ - ಮತ್ತೊಮ್ಮೆ, ನೀವು ಬೇಗನೆ ಪ್ರಾರಂಭಿಸಿದರೆ ಉತ್ತಮ.

ಎಲ್ಲಾ ದೇಶಗಳ ಮಹತ್ವಾಕಾಂಕ್ಷಿ ಪ್ರೋಗ್ರಾಮರ್‌ಗಳು, ಒಂದಾಗಿ!

ಪಿಎಸ್

ವಿದ್ಯಾರ್ಥಿಗಳೊಂದಿಗಿನ ನನ್ನ ನೇರ ಸಂಬಂಧವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು, ನಾನು ಎರಡು ರೆಕ್ಟರ್‌ಗಳೊಂದಿಗೆ 2017 ರ ಸ್ಮರಣೀಯ ಫೋಟೋವನ್ನು ಲಗತ್ತಿಸುತ್ತಿದ್ದೇನೆ: ಪೀಟರ್ ಸ್ಚಾರ್ಫ್ (ಬಲ) ಮತ್ತು ಆಲ್ಬರ್ಟ್ ಖರಿಸೊವಿಚ್ ಗಿಲ್ಮುಟ್ಡಿನೋವ್ (ಎಡ).

"ಸಂಬಂಧಿತ ವಿಶೇಷತೆಗಳಿಂದ ಪ್ರೋಗ್ರಾಮರ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮ್ಯಾನಿಫೆಸ್ಟೋ" ಅಥವಾ ನಾನು ಜೀವನದಲ್ಲಿ ಈ ಹಂತಕ್ಕೆ ಹೇಗೆ ಬಂದೆ

ಕನಿಷ್ಠ ಈ ವೇಷಭೂಷಣಗಳಿಗಾಗಿ ಕಾರ್ಯಕ್ರಮವನ್ನು ಮುಗಿಸುವುದು ಯೋಗ್ಯವಾಗಿದೆ! (ತಮಾಷೆ)

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ