ááá±á·áá»áœááºá¯ááºá áá±á¬ááºážáá«ážááẠáááá¯ááááºážáááºážááᯠááá±á¬áºáá (ááá¬ááá»áá»áááºááŒá áºá á±) áá»áŸá±á¬ááºááŸááºážáá²á·áá±á¬ áá¯áá¹ááá¯ááºáá áºáŠážáá¶á០áá»ááºáá±á¬ááºáá±á¬ á¡ááœá±ážá¡ááŒááºáá»á¬áž ááŒá áºáá«áááºá
áá¯ááºáá²á·á áá»áœááºá¯ááºáá¡ááœá±á·á¡ááŒá¯á¶ááẠáá»áœááºá¯ááºáá¡ááœá±á·á¡ááŒá¯á¶áá»áŸáá¬ááŒá áºááŒá±á¬ááºáž áá»áœááºá¯ááºáá¬ážáááºáá«áááºá ááá¯á·áá±á¬áº áááºážááẠáá±áá°áá»áááºážááŒá±á¬ááºážááœáẠáá±á¬ááºážá áœá¬ááá¯ááºáááºáááºáᯠáá°ááá«áááºá ááá¯á·á¡ááŒááºá á¡á±á¬ááºááœááºáá±á¬áºááŒáá¬ážáá±á¬á¡ááœá±á·á¡ááŒá¯á¶áááºáááá¹áá¶áááºážáá»áá¯ááºáá±á¬ááºááŸá¯áááºáááºááŸáá·áºááá¯ááá¯áááºá ááºáááºá ááá¯á·áá±á¬áºáá±á¬ááºáá¬ááá¯ááºáá« - áááºážáááºá¡ááŒááºááœááºá¡áá¯á¶ážáááºááá¯ááºáááºá
source:
áá±áá°áá»á¡á¬ážááŒáá·áº áá»á±á¬ááºážáá¬ážáá±á¬ááºážáá áºáŠážá០áááºááŸááá»á±á¬ááºážáá¬ážá¡á¬ážáá¯á¶ážááᯠáááºá á°ážáá«áááºá
áá»áŸá±á¬áºááá·áºáá»ááºáá»á¬áž
2014 ááŸá¬ Infocommunication Technologies and Communication Systems ááŸá¬ bachelor's degree ááŒá®ážááœá¬ážáá²á·á¡áá«á programming áá±á¬áááŸá¬ áá¬ááŸáá®ážáá«ážááááá²á·áá«áá°ážá áá¯ááºáááºá áááŒá¬ážáá°ááœá±ááá¯áá²á áááááŸá áºááŸá¬ âááœááºááŒá°áá¬áááá¹áá¶â áá¬áá¬áááºááᯠáááºáá°áá²á·áááºá áá«áá±ááá·áº ááááºá á¡á²áá«á áááááŸá áºááŸá¬ ááŒá áºáá²á·áááºá áá¬ááááŒá áºáá²á·ááŒá®á
áá±áá¯áá»á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááẠááœá²á·áá®ááá®ááŸáá·áº á¡áá°ážááŒá¬ážáá¬ážáá±á¬ áááºááá·áºá¡áá¬ááá¯áá»áŸ ááá»áŸá±á¬áºááá·áºáá¬ážáá²á áá»áœááºá¯ááºááẠáá¬á
áá¬á áááá¯ááááºááá¯á· áááºáá±á¬ááºáá±á¬á¡áá«á
áá«áá±ááá·áº á¡ááá¬ážáá²...
áá»áœááºá¯ááºááá¯á·ááẠáá¯áááá¡ááŒááẠá á¬ážáá¯á¶ážááŒááºážáá¬ááŒá áºááŒá®áž áááááŸá áºá០á¡áá»áá¯ážáá¬ážáá»á¬ážááẠá¡áá±ážááŸá áá»á¬ááá®ááá¯ááºáá¶ááá¯á· áááºážááá¯á·áá¡áááºáá»á¬ážááᯠáá¯ááºááá¯ážáá¬ážáá²ááŒá áºááẠ(á¡áá¯ááºáááºááẠááá¬áááá¯ááááºá áá¯áááááŸá áºááœáẠááŒá±á¬ááºáááŒá¬áááº)á áá áºáááºážááá¯ááá±á¬áºá áááºáááºážá ááºááá¯ááºážá០áááºáá°áá áºáŠážáá áºáá±á¬ááºáá»áŸ á¥áá±á¬áááá¬áá±ážáááºážáááºážáá»á¬ážááᯠáá±ážáá±ážáááºááẠáááŒá¯á¶ááœá±á·áá°ážáá±ážáá² á¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáá±ážááŒááºážááẠáááºáá°áá»áŸáááŸááá±á
áá»áœááºá¯ááºááá¯á·ááááááŸá áºááœááºá áá»áœááºá¯ááºááá¯á·ááœáẠá¡áá»áá¯ážáá»áá¯ážáá±á¬á¡áá±á·á¡áá»áá·áºáá»á¬ážááŸááá²á·ááŒá®ážá áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠáá¬ááºááœáŸááºážáá±ážáá¬ážááŒááºáž (á¡áááá¡á¬ážááŒáá·áº MATLAB áá¬áá¬á áá¬ážááŒáá·áº) ááŸáá·áº á¡áá»áá¯ážáá»áá¯ážáá±á¬ á¡áá°ážááŒá¯ GUI áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá¡ááŒá¬áž áá®ááá¯ááá±á á®áááºážáá»ááœá±ážáá»ááºááœáá·áºááᯠáá±ážáá±á¬ááºáá²á·ááŒáá«áááºá áá±á¬áºáááºáááºáááºážáá»ááºáá»á¬áž)á
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á áááºááœááºáá±á¬ ááá¯ááºáá²ááŸá¯ááŒá±á¬áá·áº áá®ážáá²á·ááá¯á· áá¯ááºáá±ážááŒááºážááᯠááŸá±á¬ááºááŒááºáá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá á€ááœááºá MathWorks á០Simulink ááŒá áºáááº- á€áá±áá¬ááœáẠááá±á¬ááºáá»á¬ážá á€áá±áá¬ááœáẠáá»áááºáááºááŸá¯áá»á¬ážá áááºáááºáá»á¬ážááŸáá·áº ááá¯ááºáá»á¬áž á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŒá áºáááºá
áá¬ážáá áºáá®ááá¯ááºážááŸáá·áº á áá áºá¡ááºáá»ááºáá®áá¬ááœáẠááááºá áá¯ááºááá¯ááºáá²á·áá°ážáá°áá áºáŠážá¡ááœáẠáá°áááºážááŒá áºááŒá®áž áá¬ážáááºááá¯ááºáá±á¬ ááŒááºááœááºážáá áºáá¯á
áá« áá«ááá¯á·á¡ááœááºáá²áááºáá²á·áá¬...
á¡ááŸááº
ááá semester á áááºááœá±á·áá»áá±á¬ á¡áá¯ááºáá»á¬ážáá²á០áá áºáá¯ááẠ"áá¯á¶á á¶ááŒááŒááºážááŸáá·áº ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºáž" áá¬áá¬áááºá áá áºá áááºáá áºááá¯ááºážá¡ááŒá ẠOFDM signal transceiver á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŒá áºáááºá á¡áá¯ááºáá®áá¬ááẠá¡ááœááºá¡á±á¬ááºááŒááºáááº- á¥ááá¬á Wi-Fi ááŸáá·áº LTE/LTE-A ááœááºáááºáá»á¬ážááœáẠ(OFDMA áá¯á¶á á¶ááŒáá·áº) á¡áá¯á¶ážááŒá¯ááŒááºážááŒá±á¬áá·áº áááºážááá¬ááẠáááºá ááºááŒá®áž á¡áá±á¬áºáá±ážáá±áááºážá á¬ážáá±áá±ážáááºá áááºáá®ááœááºážá áá áºáá»á¬ážááᯠáá±á¬áºáááºááºáá¯ááºááŒááºážááœáẠáááºážááá¯á·á áá»áœááºážáá»ááºááŸá¯áá»á¬ážááᯠáá±á·áá»áá·áºááẠáá¬á áá¬áá»á¬ážá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážá¡áá¬ááŒá áºáááºá
ááá¯áá»áœááºá¯ááºááá¯á·á¡á¬áž áááá¬áááºááŸá¬ážá áœá¬ áááºááœá±á·ááá»áá±á¬áá±á¬ááºáá±á¬ááºáá±á¬ááºáá»á¬ážáá«ááŸááá±á¬ áááºážááá¬ááá¯ááºáᬠáááºááŸááºáá»ááºáá»á¬ážá áœá¬ááᯠááœá±ážáá»ááºááœáá·áºáá»á¬ážáá±ážáá¬ážááŒá®áž (á¡ááºáá¬áááºáá±á«áºááŸá á¡ááŒá±ááá¯ááŸá¬áááº) ááŸáá·áº áá±á¬áºááŒáá¬ážááŒá®ážááŒá áºáá±á¬ Simulink ááᯠáá¯ááºáá±á«ááºááá¯ááºáááº... ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠáááºáááºáááºá¡áá¯ážáá áºáá¯á¶ážááŸáá·áº áá±á«ááºážááᯠáááááá«áááºá á¡ááŒá áºááŸááºá
- ááá±á¬ááºáá áºáá¯á á®ááẠáŠážáá¯ááºáá áºá ááºááŸááŒá±á¬ááºážááẠááŒá±á¬ááºá áá¬áá±á¬ááºážáá±á¬ á¡áááºááá ááá·áºáááºáá»ááºáá»á¬ážáá»á¬ážá áœá¬ááŒáá·áº ááŒáá·áºááŸááºáá±áááºá
- áá¶áá«ááºáá»á¬ážáá«áá±á¬ ááŒááºááŸááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáááºá ááá¯ážááŸááºážáá¯á¶ááááºá ááá¯á·áá±á¬áº áááºááẠááá±ááá«ááŒá áºáá±ááá²ááŒá áºáááºá áá¯áá¬ážáááẠáá¬ážááŒá áºáá¬ážáááºá
- áááá¯ááºáá±á¬ááá±á¬ááºáá»á¬ážááᯠá á¬ááŒáá·áºááá¯ááºáá»á¬ážááŸáááá·áº ááŸáá¯ááºážá á®ážááá·áºá¡ááá·áºááœááºááẠGUI ááᯠá¡áá°ážá¡áá°ážá¡áá¯á¶ážááŒá¯ááŒááºážá០Cathedral á ááºáá»á¬ážááẠáááááá¬áá¬ááŸá±ážááœá±ážááœá¬ážáá«áááºá
- á¡áááºááŸá¬ áá áºáá¯áá¯ááŒá®ážá¡á±á¬ááºáá¯ááºááá¯á·á áá°áá®áá²á· Simulink ááŸáááá¯á·ááá¯áááºá ááááºáá±á¬á·á á¡ááŒá¬ážááœá±ážáá»ááºá áá¬áááŸááá«á
áá¯ááºáá«áááºá á¡áá¯á¶ážááŸá¬áá±á¬á· áá»áœááºáá±á¬áºááá¯á·áᬠááá±á¬áá»ááºááᯠááŒá®ážááŒá±á¬ááºáá²á·áá±áá²á· áá»ááºáá±á¬ááºáá²á· á¡á¬áá¬áá«áá¿áááá²á· ááŒá®ážáá²á·áá«áááºá
á¡áá»áááºá¡áá±á¬áºááŒá¬ááŒá®áž ááá¬ááœá²á· áááááŸá ẠááŒá®ážáá¯á¶ážááœá¬ážáá«áááºá GUI áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááá·áº á¡áááºá á¬ááá¬áááẠáá»á¬áááºáá¬áá¬áááºáá»á¬ážá á¡áá»áá¯ážá¡á á¬áž ááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸ áááºážááẠáá«áá¬ááá¯ááºážááŒá±á¬ááºážááá·áºá¡ááá·áºááá¯á· ááá±á¬ááºáá±ážáá±á¬áºáááºážá áá»áœááºá¯ááºá¡áá«á¡ááẠáá»áœááºá¯ááºááá¯á·á¡áá»á¬ážá¡ááŒá¬ážááẠáááºáá±á¬ááºááẠáá»áœááºá¯ááºááá¯á·áá¡áá±á¬áºá¡áááºááŒá®ážáá¬ážáá±á¬ááá¬áááᯠáá»á±á¬áºááœáŸá¬ážááŒá®áž áá»áœááºá¯ááºááá¯á·ááááá¹áá¶áááºážáá»ááá±á¬áá»ááºáá»á¬ážááœáẠ(Toolboxes áá¯á¶á á¶ááŒáá·áºáá±á¬áºáááºážáá±á¬ááºáž) ááŸáá·áº áááºážááŸá®ážáááºáá¯áááºááá±á¬ Simulink ááá¯ááºáá«á
áá»áœááºá¯ááºááá¯á·ááá¶ááááŸááá±ááá·áºá¡áá»ááºááŸá¬ áá¯áááááŸá áºáá»á±á¬ááºážáá¬ážáá áºáŠážá á áá¬ážá á¯ááŒá áºááẠ(ááá¯á¡áá»áááºá áá¯ááŸá¬ážááá¯ááºáá¶ááá¯á· ááŒááºáá±á¬ááºáá²á·áááº)á
- á¡áááºážáá¯á¶áž á¡áá¯ááºáááºáá¬áá¡ááœáẠSimilinká MathCad ááŸáá·áº á¡ááŒá¬áž LabView á¡ááŒá±á¬ááºáž - áá±á¬ááºáá¯ááºážáá±á«áºááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠMatLab ááá¯ááºááá¯áẠááá¯á·ááá¯áẠáááºážá á¡ááá²á· "áá¬ážááŸááºáž" Octave ááᯠá¡áá¯á¶ážááŒá¯á MATLAB ááœáẠáá±ážáá¬ážáááºááᯠáá±á·áá¬ážááá¯ááºáá«á
á¡ááá¯áá«áá¯ááºááŒááºáá»ááºááẠáá áºá áááºáá áºááá¯ááºážááŸááºááœá¬ážáááº- Ilmenau ááœááºá áááááá¬áá»á¬ážááœá±ážáá»ááºááŸá¯ááŸáá·áºáááºáááºá á¡ááŒááºážááœá¬ážááŸá¯ááá¯áááºáž áá¯á¶ážáá¯á¶ážáááŒá±ááŸááºážááá¯ááºáá²á·áá«á ááŸááºáá«áááºá ááœá±ážáá»ááºááŸá¯ááŸá¬ MATLABá Python ááŸáá·áº C á¡ááŒá¬áž á¡áá»á¬ážá¡á¬ážááŒáá·áºááŒá áºáááºá
ááá¯áá±á·ááœááºáááºá áá»áœááºá¯ááºááẠááá¬áá¡ááá¯ááºáž á áááºááŸá¯ááºááŸá¬ážá áœá¬ áá¶áá°ááá¯ááºáááº- OFDM transmitter model á áá áºá áááºáá áºááá¯ááºážááᯠscripted form á¡ááŒá áºááá¯á· áááŒá±á¬ááºážááá·áºáá«á á¡áá»á±á¬áºáááºáááºáá«á
ááŒá®ážáá±á¬á· áá»áœááºáá±á¬áº á¡áá¯ááºáááœá¬ážáááºá
ááŒá±ááŸááºážááá¯á·áá¡áááºá·
áá®á¡áá¯áá® ááœááºáá»ááºááŸá¯á¡á á¬ážá áá®ááá·áºááºááᯠáá»áœááºáá±á¬áº ááá¯ážááá¯ážááŸááºážááŸááºáž áá±ážáááºá
á¡ááœááºáá±á¬ááºážáá²á·áá±á¬ááºážáá«áž 2011 áá¯ááŸá áºááŸtgx áá»áŸá±á¬áá»á¬ážáá±á«áºááœááºLTE áá¯ááºááá¯ááºážááá¯ááºáá¬á¡ááœáŸá¬ áá«áá±á¬áá¹ááá»á¬ážMichel-Tila (TU Ilmenau)á áá®áá±á¬ááºááᯠáá¯á¶áá±á¬ááºáááºáááºáááºá
"áá«ááá¯"áá«ááá¯á·ááŒááºáá¯ááºááŒáá·áºáá¡á±á¬ááºá áá«ááá¯á·áá¬áá¯á¶á
á¶áá¯ááºááŸá¬áá²"ááá¯á·ááœá±ážááá¯ááºáááºá
áá±á¬áºáááºáá¯ááºáááºá OFDM áááááºáá®ážá
áẠ(OFDM áááááºáá®ážá
ááº)á
áááºážááœáẠáááºááá·áºá¡áá¬áá»á¬áž áá«áááºáááºáááºáž
- á¡áá»ááºá¡áááºáááºá¹áá±ááá»á¬áž
- áá±áá¬ááºááŸá°ážá¡áá»ááºááŒááŸá¯áá»á¬áž
- áá¯á (DC)
áá»áœááºá¯ááºááá¯á·ááẠá¡áááºá¡áᬠ(ááá¯ážááŸááºážááŸá¯á¡ááá¯á·ááŸá¬) á ááá¹ááááŸ
- cyclic prefix ááᯠáá±á¬áºáááºáá¯ááºááŒááºážá០(á¡ááŒá±áá¶áá»á¬ážááᯠáááá«á áá±á«ááºážááá·áºááẠáááºáá²áááºááá¯ááºáá«)
ááá·áºááœááºážá ááºážá á¬ážáá±áá±á¬ áá±á¬áºáááºá ááá±á¬ááºáá¯á¶á á¶á áá»áœááºá¯ááºááá¯á·ááẠááŒá±á¬ááºážááŒáẠFFT (IFFT) ááá±á¬ááºááœáẠáááºáá«áááºá áá¯á¶ááŒá®ážá¡á±á¬ááºáá¯ááºááá¯á·á áá»ááºáá¬ááᯠá¡á¬ážáá¯á¶ážá áá°ááá¯á·áá¬áᬠáááºáá¯ááºááá¯ááºáááºá áá»á±á¬ááºážáá¬ážááœá±á¡ááœáẠáá áºáá¯áá¯áá»ááºáá¬ážáá²á·ááá¯á· áá¬áá ááá¬ááœá±ááᯠááááá±ážáá²á·áááºá
á¡á²áá«ááœá±ááᯠááá¯áá·áºá¡ááœááºáá² áááºááŸááºááŒáá«á áá¯á·á áá±á·áá»áá·áºáááºáž
- áááºááŸááºáá¬ážáá±á¬ áááºáá±á¬ááºááŸá¯ááœá²áá»á¬áž á¡áá±á¡ááœááºá
- áá¯á¶áá±áá±á¬ááºá¡ááŸááº;
- á¡áááºááœáẠáá¯ááá áºáá¯ááŸáá·áº áá±á¬ááºáá¡á ááŸáá·áºá¡áá¯á¶ážááœáẠáá¯ááá áºá á¯á¶ (á á¯á á¯áá±á«ááºážá 5 áá¯)á
- á¡áá»ááºá¡áááºáááºá¹áá±ááá»á¬ážááᯠM-PSK ááá¯á·ááá¯áẠM-QAM ááᯠá¡áá¯á¶ážááŒá¯á ááŒá¯ááŒááºááœááºážáá¶áá¬ážááŒá®áž M ááẠáá±á¬áºáá»á°áá¬á¡ááŸá¬á á¬ááŒá áºáááºá
áá¯ááºááŒáá·áº á ááá¯ááºáá¡á±á¬ááºá
áá¬ááºááœáŸááºážáá áºáá¯áá¯á¶ážááᯠáá±á«ááºážáá¯ááºáá¯ááºááá¯ááºáááºá
link ááᯠ.
ááá·áºááœááºážááŸá¯áá±á¬ááºáá»á¬ážááᯠáááºááŸááºááŒáá«á áá¯á·á
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);
á¡áᯠpilot signals ááœá±ááᯠáá¬ážáááºáá¡á±á¬ááºá
áá»áœááºá¯ááºááá¯á·ááœáẠáá¯á¶á á¶ááœááºáá áºáá¯ááŸáááẠ(ááŒá±á¬ááºážáá²ááá¯ááºáááºá áá±áá¬ááºááŸá°áž) ááŸáá·áº áá»áœááºá¯ááºááá¯á·ááẠá€áá¯á¶á á¶áááááºá០áá±áá¬ááºááŸá°ážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·ááá±á¬ááºáá²ááá¯á· á ááºáááºáááŒáẠááá·áºááœááºážá á±ááá¯áááºááá¯ááŒáá«á áá¯á·á áá¯ááºáá«áááºá áá«ááᯠááœááºážáááºáá²á· áá¯ááºáá±á¬ááºááá¯ááºáá«áááºá ááá¯á·ááá¯áẠáááºááẠmatrices ááŒáá·áº á¡áááºážááẠááŸá¯ááºááœá±ážá áœá¬ áá á¬ážááá¯ááºááẠ- áá¶áá±á¬ááºážá áœá¬ááẠMATLAB ááẠááá·áºá¡á¬áž áá¯á¶áá±á¬ááºáá±á¬ ááŸá áºáááá·áºááŸá¯ááŒáá·áº áááºážááᯠááŒá¯áá¯ááºááá¯ááºá á±áá«áááºá
ááááŠážá áœá¬á á€áááºážáááááºáá»á¬áž áááºáá»áŸ áá±á¬ááºááŸáá·áº áá¯á¶ážá ááá¯ááºáá®ááŒá±á¬ááºáž áá¯á¶ážááŒááºááŒáá«á áá¯á·á
pilots_len_psudo = floor(N_pil/length(pilots));
áá±á¬ááºáá áºáá¯á áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á templates áá»á¬ážáá«áááºááá·áº vector áá áºáá¯ááᯠáááºáá®ážáááº-
% 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
áá»áœááºá¯ááºááá¯á·ááẠáá¯á¶á á¶ááœááºáá áºááá¯ááºážáá»áŸáá¬áá«ááŸááá±á¬ áá±ážáááºáá±á¬ vector ááá¯áááºááŸááºááẠ- áá±á¬ááºááŸáá·áºáá¯á¶ážááááá¯ááºáá®áá±á¬ "á¡ááŒá®áž"á
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 áá¯ááºáá±á¬ááºáá»ááºá¡áá»áá¯á·ááᯠáá±á·áá¬ááŒááºážááŸáá·áº áááºá¹áá»á¬ááŸáá·áºááœááºáá»á¬ážááŸáá áºááá·áº ááœá±ážáá±á¬ááŒááºážá¡áá«á¡ááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºááẠáá¬áá®á¡áááºážááẠá¡áá»áááºáá°áá²á·ááááºá
á¡á²áá®áá¯ááºážá áááºááá¯áá±á¬ááºáá»ááºáá»áá²á·áá²á
á¡á á®á¡áááºáá¶áááº:
- áá¯ááºáá±ážááᬠááŒááºáá°ážá áá¬áá±á¬ááºážááŒá®áž ááá»á¬áá²á·áá°áááºá
- Scripting ááẠCommunication and Signal Processing áááºáááºá¡ááœáẠá¡áááºááŒá±áá¯á¶áž áá¯áá±áááááºážáááºážááŒá áºáááºá
áááºááœááºáá»ááº:
- á¡ááŒá±á¬ááºáá»á¬ážá០á á¬ááŸááºáá»á¬ážááᯠáá áºááẠáááá¯á¡ááºáá« (ááá¯áá²á·ááá¯á·áá±á¬ ááá¬áá±ážáááºážááá¯ááºááẠááá¯ááºáááºáááºááá¯ááºáá»áŸááº) Simulink ááᯠá¡áá¯á¶ážááŒá¯á ááá¯ážááŸááºážáá±á¬ ááŒá¿áá¬ááᯠáá±ááºáá®áá±á¬ áááááá¬áá áºáá¯ááŒáá·áº ááŒá±ááŸááºážááá¯ááºáá²á·áá«áááºá
- GUI ááẠáá±á¬ááºážááœááºáá±á¬áºáááºáž âáá±á«ááºážá¡á¯á¶ážá¡á±á¬ááºááœááºâ áá«ááŸááá±á¬á¡áá¬ááᯠáá¬ážáááºááŒááºážá ááá¯áá±á¬ááºážáá«áááºá
ááá¯áááºáž áá»á±á¬ááºážáá¬ážááá០áá±ážááœá¬áá±áá±á¬ áá»á±á¬ááºážáá¬áž áá®á¡ááá¯á¡á¬áž á¡á±á¬ááºáá«á¡ááá¯ááºáž ááŒá±á¬ááŒá¬ážááá¯áá«áááºá
- ááá¯ááá¯á· Go!
á¡á ááá¯ááºážááŸá¬ ááá±á¬ááºážáááºáá±á¬áẠáá¯ááºáá±ážááŒáá·áºáá«á áááá¯ááááºáá±ážááœá²ááŒááºážááŸáá·áºá¡áá°á á¡ááŒá¬ážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážáá²á·ááá¯á·áááºá á¡áááºáá²áá¯á¶ážá¡ááá¯ááºážááŸá¬ á¡á ááŒá áºáááºá ááŒá®ážáá±á¬á· á á±á¬á á±á¬á á áá¯ááºáá¬á ááá¯áá±á¬ááºážáá«áááº- á¡áááºá áááºááẠáááá¹áá¶ááá¬ááŸáẠááá¯á·ááá¯áẠáááºážááá¬ááá¬ážáá áºáŠážááŒá áºáá²á·áá«áá áááŒá¬áá® ááá¯á·ááá¯áẠáá±á¬ááºááá¯ááºážááœáẠáááºááẠá€áá»áœááºážáá»ááºááŸá¯ ááá¯á¡ááºáááºááŒá áºáááºá
- áááºááá¯á¡á¬áž!
ááá¬áá»á¬ážááŸáá·áº ááŒá®ážááŒááºáá±ážááŸá°ážáá»á¬ážáá¶á០ááá¯ážáááºáá±á¬áá»ááºážáááºááŸá¯áá»á¬ážááŸáá·áº áááááá¬áá»á¬ážááᯠáá±á¬ááºážááá¯áá«á ááŒá áºááá¯ááºááẠáá¯ááºáá«áááº...
- áááºáá®ážáá«á
ááá¬áá±ážáááá¯ááááºááá±á¬ááºá¡ááœááºážááŸááá¯ááºáá«áá¡á ááŒá¯áá°áá¡áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááá¯áá»á±á¬áºááŒááºáááºáááºááŸá¬ááá¯áá±á¬ááºážááááºážá áááºážáá²á·á¡áááºá¡áá»ááºážááœá±ááᯠáááºáá®ážááŒá®áž ááŒáŸáá·áºáááºáá« - áá±á¬ááºáááẠáááºá áááºáᬠááŒááºáá±áá± ááá¯áá±á¬ááºážáá±áá«áá²á
ááá¯ááºáá¶ááá¯ááºážá០ááá¯áá¬ážáá±á¬áá·áºááá±á¬ áááá¯ááááºáá¬áá»á¬áž á ááºážáá¯á¶ážáá®ááœááºáá«á
PS
áá»á±á¬ááºážáá¬ážáá»á¬ážááŸáá·áº áá»áœááºá¯ááºá ááá¯ááºááá¯ááºáááºáá¶áá±ážááᯠááŸááºáááºážáááºáááºá¡ááœááºá áá»áœááºá¯ááºááẠáá«áá±á¬áá¹ááá»á¯ááºááŸá áºáŠážááŒá áºááá·áº Peter Scharff (áá¬áááº) ááŸáá·áº Albert Kharisovich Gilmutdinov (áááºáááº) ááá¯á·ááŸáá·áºá¡áá° 2017 áá¯ááŸá áºá á¡ááŸááºáááá¬ááºáá¯á¶ááᯠáá°ážááœá²áááºáá¬ážáá«áááºá
áá®áááºá á¯á¶ááœá±á¡ááœáẠá¡áááºážáá¯á¶ážáá±á¬á· á¡á á®á¡á ááºááᯠááŒá®ážá¡á±á¬ááºáá¯ááºááᬠáááºáá«áááºá (áá±á¬ááºáá¬áá«)
source: www.habr.com