рд╣рдо MIMO рдЪреИрдирд▓ рдХреЗ рдереНрд░реВрдкреБрдЯ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ (рдкрд╛рдиреА рдбрд╛рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╢рд╛рдорд┐рд▓ рд╣реИ)


рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


2016 рдХреА рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ, рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ, рдЖрдкрдХрд╛ рд╡рд┐рдирдореНрд░ рд╕реЗрд╡рдХ, рдЕрдиреНрдп рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдмреАрдЪ, рдПрдордЖрдИрдПрдордУ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдкреНрд░реЛрдлреЗрд╕рд░ рдорд╛рд░реНрдЯрд┐рди рд╣реИрд░реНрдб рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдЬрд┐рд╕реЗ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдорд╛рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо "рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди рдПрдВрдб рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ" рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рджреЛ рдореЗрдВ рд╕реЗ рдбреЗрдврд╝ рд╣рдлрд╝реНрддреЗ рдореИрдВ рдмрд╣реБрдд рдмреАрдорд╛рд░ рд╣реЛ рдЧрдпрд╛ - рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрдИ рд╡рд┐рд╖рдп рдореЗрд░реА рд╕рдордЭ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдП ... рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдПрдордЖрдИрдПрдордУ рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдореЗрд░рд╛ рд╢реМрдХ рдмрди рдЧрдпрд╛ - рдорд╛рдорд▓реЗ рдХреЛ рдЕрдзреВрд░рд╛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред


рдХрдо рд╕реЗ рдХрдо, рдпрд╣ рд╕рдм рдЫреЛрдЯреЗ рд╕рд╛рд░ рд╕реЗрдорд┐рдирд╛рд░реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рд╣реИ, рдЬреЛ, рд╢рд╛рдпрдж, рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдФрд░ рдЖрдЬ, рд╕рдВрдЪрд╛рд░ рджрд┐рд╡рд╕ рдХреЗ рд╕рдореНрдорд╛рди рдореЗрдВ , рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде MIMO рдЪреИрдирд▓ рдХреЗ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ - рд╡рд┐рд╖рдп рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЫрд╛рддреНрд░реЛрдВ (рдФрд░ рди рдХреЗрд╡рд▓ рдЫрд╛рддреНрд░реЛрдВ) рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред


рдпрд╣ рдмрд┐рди рдмреБрд▓рд╛рдП рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рддрдХрдиреАрдХ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдПрдВрдЯреЗрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╕реЗ рдПрдХ рд╣реА рд░рд╛рд╢рд┐ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдмреИрдВрдбрд╡рд┐рдбреНрде рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдкрдХреНрд╖ рдкрд░ 2 рдПрдВрдЯреЗрдирд╛ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдкрдХреНрд╖ (рдПрдордЖрдИрдПрдордУ 2x2) рдкрд░ 2 рдПрдВрдЯреЗрдирд╛ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдереНрд░реВрдкреБрдЯ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдврд╝реЗрдЧрд╛ред 2 рдмрд╛рд░ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рднреА рд╕рд╣реА рд╣реИ? рдЪрд▓реЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ!


рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдФрдкрдЪрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдВрдХ рдкрд░ рдФрд░ рдореЗрд░реЗ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдВрдЯреАрдирд╛ рд╕рд╣рд╕рдВрдмрдВрдз рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЦреБрдж рдХреЛ рдПрдХ рдЖрд╕реБрдд рд╕рд┐рджреНрдзрд╛рдВрдд рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдПред

рд╕рд┐рдЧреНрдирд▓ рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛



рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдХреЗрдд рдХреЗ рдЧрдгрд┐рддреАрдп рд╡рд┐рд╡рд░рдг рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рдЗрд╕ рднрд╛рдЧ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реВрддреНрд░ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдЖрдПрдЧрд╛ред рддреЛ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдХреЗрдд рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


\ mathbf {y} = \ sqrt {\ frac {P} {M_T}} \ mathbf {H} \ mathbf {s} + \ mathbf {n} \ qquad (1)

рдЬрд╣рд╛рдБ рдкреА - рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдмрд┐рдЬрд▓реА, M_T - рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯрд┐рдВрдЧ рдПрдВрдЯреЗрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛, \ mathbf {s} - рдкреНрд░реЗрд╖рд┐рдд рд╡рд░реНрдг \ mathbf {n} - рдпреЛрдЬрдХ рд╢реЛрд░, рдФрд░ \ mathbf {H} - рдЪреИрдирд▓ рдХреЗ рд╕рдВрдЪрд░рдг рдЧреБрдгрд╛рдВрдХ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓реБрдкреНрдд рд╣реЛрддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛)ред


рдкреНрд░реЗрд╖рд┐рдд рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


s_i = \ gamma_i d_i \ quad i = 1,2, .. M_T \ qquad (2)

рдЬрд╣рд╛рдБ di - рд╕реВрдЪрдирд╛ рд╕рдВрдХреЗрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ ( E \ {\ mathbf {d} \ mathbf {d} ^ H \} = M_T ), рдФрд░ \ рдЧрд╛рдорд╛_рдЗ - рдПрдХ EM рддрд░рдВрдЧ (рдкрде рд▓рд╛рдн) рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрде рдХрд╛ рдкреНрд░рд╡рд░реНрдзрдиред


рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдкрде рд╕реБрджреГрдвреАрдХрд░рдг рдХреНрдпрд╛ рд╣реИ:
рдкреНрд░рд╕рд╛рд░ рдкрде (рдпрд╛ рдПрдВрдЯреАрдирд╛ рд╡рдЬрди) рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкрде рдХреЗ "рддрд╛рдХрдд" рдХреЗ рдЖрдиреБрдкрд╛рддрд┐рдХ рдЙрддреНрдкрд╛рджрди рд╢рдХреНрддрд┐ рдХрд╛ рд╡рд┐рддрд░рдгред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдЕрдЪреНрдЫреЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐ (рдкреНрд░рд╕рд╛рд░ рдкрде) рдФрд░ рдмреБрд░реЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдо рдКрд░реНрдЬрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рдПрдВрдЯреАрдирд╛ рд╡рдЬрди рд╕рдВрдЪрд╛рд░рдг рдПрдВрдЯреЗрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИрдВ:


\ sum ^ r_ {i = 1} \ gamma_i = M_T \ qquad (3)

рдЬрд╣рд╛рдБ рдЖрд░ рдЪреИрдирд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд░реИрдВрдХ рд╣реИ ред


рдмрд╛рдж рдХрд╛ рдмреЛрд▓рдирд╛ред


рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЖрдпрд╛рдо \ mathbf {H} рдмрдирд╛рддрд╛ рд╣реИ M_R \ рдЯрд╛рдЗрдореНрд╕ M_T рдЬрд╣рд╛рдБ M_R - рдПрдВрдЯреЗрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдХрдИ рдмрд╛рд░ рдорд╛рдк рдХреЗ рд▓рд┐рдП, рдЪреИрдирд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:



рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП:
рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛ рдФрд░ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ - рдореИрдЯрд▓реИрдм ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрдВрдХреНрддрд┐рдпрд╛рдВ рд╕рдордп рдорд╛рдк (рд╕реНрдиреИрдкрд╢реЙрдЯ) рд╣реИрдВ, рд╕реНрддрдВрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдПрдВрдЯреЗрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ M_T , рдкрд╛рд░реНрд╢реНрд╡ рдЖрдпрд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ M_R ред

MIMO рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдореВрд▓рд╛ (1) рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


MISO ( M ultiple Input S ingle Output - рдХрдИ рд╕рдВрдЪрд╛рд░рдг рдПрдВрдЯреЗрдирд╛ рдФрд░ рдПрдХ рдкреНрд░рд╛рдкреНрдд):


y = \ sqrt {\ frac {P} {M_T}} \ mathbf {h} \ mathbf {s} + n \ qquad (4)

рдЬрд╣рд╛рдБ \ mathbf {h} рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ 1 \ _ рдмрд╛рд░ M_T ред


SIMO ( S ingle Single M ultiple O utput - рдХрдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдВрдЯреЗрдирд╛ рдФрд░ рдПрдХ рд╕рдВрдЪрд╛рд░рдг рдПрдВрдЯреАрдирд╛):


y = \ sqrt {P} \ mathbf {h} s + \ mathbf {n} \ qquad (5)

рдЬрд╣рд╛рдБ \ mathbf {h} рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ M_R \ рдЧреБрдирд╛ 1


рдПрд╕рдЖрдИрдПрд╕рдУ ( рдПрд╕ рдЗрдВрдЧрд▓ рд╕рд┐рдВрдЧрд▓ рдПрд╕ рдЗрдВрдЧрд▓ рдУ рдпреВрдЯреНрд░рдк - рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдПрдВрдЯреАрдирд╛):


y = \ sqrt {P} hs + n \ qquad (6)

рдпрд╣ рд╕рд░рд▓ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред


рд╕рднреА рдЖрдЧреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рджреЛ рдмрдбрд╝реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЪреИрдирд▓ рд░рд╛рдЬреНрдп рд╕реВрдЪрдирд╛ (CSI - рдЪреИрдирд▓ рд░рд╛рдЬреНрдп рд╕реВрдЪрдирд╛) рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИ ( CU - рдЪреИрдирд▓ рдЕрдЬреНрдЮрд╛рдд) рдФрд░ рдЪреИрдирд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ ( CK - рдЪреИрдирд▓ рдЬреНрдЮрд╛рдд) рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреА рдЬрд╛рддреА рд╣реИред


рдКрдкрд░, рд╣рдордиреЗ рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрдм рдЪреИрдирд▓ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ ( рдУрдкрди-рд▓реВрдк рдХреЗрд╕ , рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╕рд╛рд░рдг) рдХреЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рд╣рдо рдХреЛрдИ рдкреНрд░рднрд╛рд╡реА рджрд┐рд╢рд╛ рдирд╣реАрдВ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо рд╕рднреА рдПрдВрдЯреЗрдирд╛ (рдкрде, рдкреНрд░рд╕рд╛рд░ рдкрде) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рди рд╢рдХреНрддрд┐ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкрде рд▓рд╛рдн рдХрд╛ рд▓рд╛рдн 1 рд╣реИ :


\ gamma_i = 1, \ quad i = 1,2, .. M_T \ qquad (7)

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ: рд╣рдо рдЕрдЪреНрдЫреЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ( рдЦрд░рд╛рдм рд░рд╛рд╕реНрддреЗ) рдФрд░ рдмреБрд░реЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдо рдКрд░реНрдЬрд╛ред


рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдмрд┐рдЬрд▓реА рдХреИрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВ?


рдпрджрд┐ рдЪреИрдирд▓ рдЬреНрдЮрд╛рдд рд╣реИ ( рдмрдВрдж-рд▓реВрдк рдХреЗрд╕ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде), рд╣рдо рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдЙрдиреНрдирдд рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡-рдХреЛрдбрд┐рдВрдЧ рдФрд░ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЬреИрд╕реЗ рд░реИрдЦрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд╕рд╛рдеред


рд╣рдо рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдЕрдВрддрд┐рдо рджреЛ рд╢рдмреНрджреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИред


рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрдЪрд╛рд░рд┐рдд рдкрдХреНрд╖ рдкрд░ рд╕реАрдПрд╕рдЖрдИ рд╣реИ , рдЕрд░реНрдерд╛рддред рдореИрдЯреНрд░рд┐рдХреНрд╕ \ mathbf {H} , рд╣рдо рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SVD (рдПрдХрд╡рдЪрди рдорд╛рди рдЕрдкрдШрдЯрди) рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред



рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ \ mathbf {\ рд╕рд┐рдЧреНрдорд╛} рдПрдХ рд╡рд┐рдХрд░реНрдг рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдХрд░реНрдг (рдПрдХрд╡рдЪрди рдорд╛рди) рдХреЗ рддрддреНрд╡, рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рд╕рд╛рд░ рдкрдереЛрдВ рдХреЗ рд╕рд╛рд░, рд╕рдВрдЪрд░рдг рдЧреБрдгрд╛рдВрдХ рдореЗрдВ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рд╣рдо рдПрдХрд╡рдЪрди рдорд╛рдиреЛрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рд╕рдВрдХреЗрдд рдХреЗ рдЧреБрдгрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ \ mathbf {\ рд╕рд┐рдЧреНрдорд╛} рдкреВрд░реЗ рдЪреИрдирд▓ рдХреЗ рдмрдЬрд╛рдп \ mathbf {H} , рдлрд┐рд░ MIMO рдЪреИрдирд▓ рд╕рдорд╛рдирд╛рдВрддрд░ SISO рдЪреИрдирд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред


рддреЛ рд░реИрдЦрд┐рдХ рдкреНрд░реАрдХреЛрдбрд┐рдВрдЧ рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдлрд╝рд┐рд▓реНрдЯрд░) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП \ mathbf {F} = \ mathbf {V} _s , рдФрд░ рд░реИрдЦрд┐рдХ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ (рдбреАрдореЛрдбреБрд▓реЗрдЯрд░) рдХрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ \ mathbf {D} = \ mathbf {U} ^ H_s ( рдПрдЪ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╣рд░реНрдорд┐рдЯрд┐рдпрди рд╕рдВрдпреБрдЧреНрдорди)ред


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде \ mathbf {F} рдФрд░ \ mathbf {D} рд╕рдорд╛рди рдкрд╣рдЪрд╛рди рдореИрдЯреНрд░реАрд╕ред

рдЕрдм, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЖрдЗрдП рдкреНрд░рд╛рдкреНрдд рд╕рдВрдХреЗрдд рдХреЗ рдореЙрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:


\ mathbf {Dy} = \ mathbf {D} \ left (\ sqrt {\ frac {P} {M_t}} \ mathbf {H} \ mathbf {F} \ mathbf {s} + mathbf {n} \ right) = \ mathbf {U} ^ H_s \ mathbf {y} = \ sqrt {\ frac {P} {M_t}} \ mathbf {U} ^ H_s \ mathbf {H} \ mathbf {V} _s \ mathbf {s} + \ mathbf {U} ^ H_s \ mathbf {n} = \ sqrt {\ frac {P} {M_t}} \ mathbf {\ _ рд╕рд┐рдЧреНрдорд╛} _s \ mathbf {s} + \ _ mathbf {\ _ {n}} = \ mathbf {рд╣реИрдЯ {y}} \ qquad (8)

рдзреНрдпрд╛рди рджреЗрдВ:


  • \ mathbf {\ hat {n}} рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЧреБрдг рд╣реИ \ mathbf {n} ;
  • рдИрдЧрди рдорд╛рди \ mathbf {HH} ^ H рдЪреИрдирд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдПрдХрд╡рдЪрди рдорд╛рди рдХреЗ рд╡рд░реНрдЧ рд╣реИрдВ \ mathbf {H} ( \ sigma_i = \ sqrt {\ lambda_i} )ред

рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


sch

рдЕрдВрдЬреАрд░ред 1. рдкреВрд░реНрд╡-рдХреЛрдбрд┐рдВрдЧ рдФрд░ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ [1, рдкреА .66] рдХреА рдпреЛрдЬрдирд╛ред


Parall

рдЕрдВрдЬреАрд░ред 2. рдореЛрдбрд▓ рдЕрдкрдШрдЯрди рдХреА рдпреЛрдЬрдирд╛ \ mathbf {H} рдЬрдм рдЪреИрдирд▓ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдФрд░ рд░рд┐рд╕реАрд╡рд░ [1, p.67] рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


рдореВрд▓ рдмрд╛рддреЗрдВ рдЕрд▓рдЧ рд▓реЗ рд▓реА рдЬрд╛рддреА рд╣реИрдВ - рд╣рдо рд╕реАрдзреЗ рдмреИрдВрдбрд╡рд┐рдбреНрде рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ!


рдкреНрд░рд╡рд╛рд╣ рдХреНрд╖рдорддрд╛ (рдХреНрд╖рдорддрд╛)


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдпрд╛рдж рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрд╢рд╛рд╕рди рд╕реЗ рдмреИрдВрдбрд╡рд┐рдбреНрде рд╢рдмреНрдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ рдерд╛ред рдЖрдорддреМрд░ рдкрд░ (рдореЗрд░реЗ рдЫрд╛рддреНрд░ рдЙрдореНрд░ рдореЗрдВ), рд╡рд┐рдЪрд╛рд░ AWGN рдЪреИрдирд▓ рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдорд╛рдорд▓реЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рдлрд╝реЗрдбрд┐рдВрдЧ рд╡рд╛рд▓реЗ MIMO рдЪреИрдирд▓ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдХрд┐рддрд╛рдмреЛрдВ рд╕реЗ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЬреАрд╡рди рдХреЛ рд╕реВрддреНрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЪреАрдЬ рдХреЛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд░рдВрдЧреАрди рдФрд░ рд╣рд╛рдереЛрдВ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд░реВрдк рдХрдо рдердХрд╛рдК рд╣реЛрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╣рдо рд╕рд┐рдЧреНрдирд▓ рдореЙрдбрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



рдЕрдм рдЖрдкрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдереНрд░реВрдкреБрдЯ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ ред



рд╣рдо рдкреНрд░рд╛рдкреНрдд рд╕рдВрдХреЗрдд рдФрд░ рдЙрд╕рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕реНрд╡рд╕рдВрдкреВрд░реНрдг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



рдФрд░ рд╣рдо рдЕрдВрддрд░ рдПрдиреНрдЯреНрд░рд╛рдкреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:



рд╕реНрдерд╛рдирд╛рдкрдиреНрди (4) рдФрд░ (5) рдореЗрдВ (2):



рдФрд░ рдЕрдм рд╣рдо (1) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ:



рд╣рдо рддрд░реНрдХ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЛ рд▓реЗрдВ: рдЪреИрдирд▓ рдЕрдЬреНрдЮрд╛рдд рд╣реИ ( рд╕реА рд╣реИрдВрдирд▓ рдпреВ рдиреЛрд▓реНрдб)ред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╖реНрдЯрддрдо рд╕рдВрдЪрд░рдг рджрд┐рд╢рд╛ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрдХреЗрдд рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдВрдЧреЗ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдорд╛рди рд╢рдХреНрддрд┐ (рдЗрдХреНрд╡реА-рдкрд╛рд╡рд░реНрдб) рд╣реЛрдЧреАред рдЕрдзрд┐рдХрддрдо рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ ( Tr \ {\ mathbf {R} _ {ss} \} = M_T ), рд╣рдо рдкрд╣рдЪрд╛рди рд╡рд╛рд▓реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╕рдВрдЪрд░рд┐рдд рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕реНрд╡рддрдГ рд╕рдВрд▓рдпрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:



рд╣рдо рдирд┐рд░реНрдзрд╛рд░рдХреЛрдВ рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:


det \ left (\ mathbf {I} _m + \ mathbf {AB} \ right) = det \ left (\ mathbf {I} _n + \ mathbf {BA} \ right)

рдпрд╣ рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдФрд░ рд╣рдо рдореИрдЯреНрд░реАрдкреНрд╕ рдХреЛ рд╕реНрд╡реИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ \ mathbf {Q} \ mathbf {Q} ^ H = \ mathbf {I} (рдИрд╡реАрдбреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рд╕реЗ)ред рд░рд╣реЗрдЧрд╛:



рдорд╛рддреГрд╕рддреНрддрд╛ рд╕реЗ рд▓реЗрдХрд░ рд░рдХрдо рддрдХ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:



рдпрд╣ рд╕реВрддреНрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ MIMO рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ SISO рдЪреИрдирд▓ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдЬреНрдЮрд╛рдд рдЪреИрдирд▓ ( рд╕реА рд╣реИрдВрдирд▓ рдХреЗ рдирд╛рдЙрди) рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рд╕реВрддреНрд░ рдХреЛ рдПрдВрдЯреАрдирд╛ рд╡реЗрдЯ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛:



рд╣рдо рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рднреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



рдиреЛрдЯ :
SIMO рдФрд░ MISO рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП , рдпрд╣ рд╡реНрдпрд░реНрде рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдлреНрд░реЛрдмреЗрдирд┐рдпрд╕ рдорд╛рдирджрдВрдб рдХреЗ рд╡рд░реНрдЧ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ || \ mathbf {h} || _F ^ 2 - рдЧрдгрд┐рддреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╡реЗ eigenvalues тАЛтАЛрдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ \ mathbf {h} \ mathbf {h} ^ H ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рд╣рд╛рде рд╕реЗ рдХреБрдЫ рдЬрд▓реНрджреА рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рдЦреИрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд▓рд┐рдЦрд╛рд╡рдЯ рдФрд░ рдореЗрд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддреА рдереА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЪрд▓реЛ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:


  • рд╣рд╛рдВ, MIMO рдЪреИрдирд▓ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЛ SISO рдЪреИрдирд▓ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЗ рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд░рд╛рд╢рд┐ рдЪреИрдирд▓ рдХреА рд░реИрдВрдХ рддрдХ рд╕реАрдорд┐рдд рд╣реИ!

рдкрд╛рдиреА рдбрд╛рд▓рдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдердо


рдЬреИрд╕рд╛ рдХрд┐ рдЪреИрдирд▓ рдХреЗ рд╕рдВрдЪрд╛рд░рдг рдкрдХреНрд╖ (рд╕реАрдХреЗ - рдЪреИрдирд▓ рдЬреНрдЮрд╛рдд) рдкрд░ рдЬреНрдЮрд╛рдд рдмреИрдВрдбрд╡рд┐рдбреНрде рд╕реВрддреНрд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдВрдЯреЗрдирд╛ рдкрд░ рдКрд░реНрдЬрд╛ рд╡рд┐рддрд░рдг рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╛рдиреА рдбрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо ( рдкрд╛рдиреА рд╕реЗ рднрд░рдиреЗ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ [1, рдкреАред 68-69]:


import numpy as np from numpy import linalg as LA import matplotlib.pyplot as plt def waterpouring(Mt, SNR_dB, H_chan): SNR = 10**(SNR_dB/10) r = LA.matrix_rank(H_chan) H_sq = np.dot(H_chan,np.matrix(H_chan, dtype=complex).H) lambdas = LA.eigvals(H_sq) lambdas = np.sort(lambdas)[::-1] p = 1; gammas = np.zeros((r,1)) flag = True while flag == True: lambdas_r_p_1 = lambdas[0:(r-p+1)] inv_lambdas_sum = np.sum(1/lambdas_r_p_1) mu = ( Mt / (r - p + 1) ) * ( 1 + (1/SNR) * inv_lambdas_sum) for idx, item in enumerate(lambdas_r_p_1): gammas[idx] = mu - (Mt/(SNR*item)) if gammas[rp] < 0: #due to Python starts from 0 gammas[rp] = 0 #due to Python starts from 0 p = p + 1 else: flag = False res = [] for gamma in gammas: res.append(float(gamma)) return np.array(res) 

рдкрд░реАрдХреНрд╖рдг:


 Mt = 3 SNR_db = 10 H_chan = np.array([[1,0,2],[0,1,0], [0,1,0]], dtype = float) gammas = waterpouring(Mt, SNR_db, H_chan) print('Rank of the matrix: '+str(LA.matrix_rank(H_chan))) print('Gammas:\n'+str(gammas)) >>> Rank of the matrix: 2 >>> Gammas: >>> [1.545 1.455] 

рдЦреИрд░, рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ:
1) рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рдкреНрд░рд╕рд╛рд░рдг рдПрдВрдЯреЗрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЪреИрдирд▓ рдХреА рд░реИрдВрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ;
2) рдПрдВрдЯреЗрдирд╛ рдХреЗ рд╡рдЬрди рдХрд╛ рдпреЛрдЧ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯрд┐рдВрдЧ рдПрдВрдЯреЗрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред


рджреЛ рд╕реАрдорд┐рдд рдорд╛рдорд▓реЗ


рдФрд░ рдЕрдм рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЬрд╛рдПрдВ рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдВред


рдЖрдЗрдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреБрдгрд╛рдВрдХ рдХреЗ рдмрд░рд╛рдмрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ \ рдЧрд╛рдорд╛_рдЗ SNR рдХреЗ рд╕рд╛рде рд░реБрдЭрд╛рди рдХреЗ рд▓рд┐рдП + \ _ infty рдФрд░ - \ (рдПрдХ рд▓рдШреБрдЧрдгрдХреАрдп рдкреИрдорд╛рдиреЗ рдкрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдирдХрд╛рд░рд╛рддреНрдордХ рд╢рдХреНрддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ)ред


рд╣рдо рдбреЗрд╕реАрдмрд▓ рдФрд░ рд╕рдордп рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЗ рд╕реВрддреНрд░ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ:


SNR_ {dB} = 10log_ {10} \ left (\ frac {S} {N} \ right)

рдЬрд╣рд╛рдБ рдПрд╕ - рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрдХреЗрдд рдХреА рд╢рдХреНрддрд┐ (рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░рддреАрдХ рдКрд░реНрдЬрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ E_s ), рдФрд░ рдПрди - рд╢реЛрд░ рд╢рдХреНрддрд┐ (рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рд╢реЛрд░ рдХреЗ рд╡рд░реНрдгрдХреНрд░рдореАрдп рдШрдирддреНрд╡ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ N_0 )ред


рддреЛ рдПрдХ рд░реЗрдЦреАрдп рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реЛрдЧрд╛:


\ frac {E_s} {N_0} \ equiv \ frac {S} {N} = 10 ^ {SNR_ {dB} / 10}

рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдореВрд▓ рд╕реВрддреНрд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:


\ mu = \ frac {M_T} {(r-p + 1)} \ left [1 + \ frac {N_0} {E_s} \ sum_ {i = 1} ^ {r-p + 1} \ fc {1} {[lambda_i} \ right]

рдЬрд╣рд╛рдБ рдкреА 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╣реИ, рдЖрд░ рдЪреИрдирд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд░реИрдВрдХ рд╣реИ, \ lambda_i - рдЪреИрдирд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ "рд╕реНрдХреНрд╡рд╛рдпрд░" рдХрд╛ i-th рдЖрдЗрдЬрдирд╡реЗрд▓реНрдпреВред рдЧрд╛рдорд╛ рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрди рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИ:


\ gamma_i = \ left (\ mu - \ frac {M_TN_0} {E_s \ lambda_i} \ right) \ quad i = 1,2, ..., r-p + 1

рд╣рдо рддрд░реНрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:


рдЕрдЧрд░ SNR_ {dB} \ рд╕реЗ + \ infty , рддрдм \ frac {E_s} {N_0} \ рд╕реЗ + \ infty ред рдЗрд╕рд▓рд┐рдП, \ frac {N_0} {E_s} \ рдХреЛ 0 ред рдкрд╣рд▓реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрдиреА рд╣реБрдИ рд╣реИ:


\ mu = \ frac {M_T} {r}

рдЧрд╛рдорд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди:


\ gamma_i = \ mu = \ frac {M_T} {r} \ quad i = 1,2, ..., r

рд╣рдо рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВ:


рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рд╕рдВрдЪрд░рдг рдКрд░реНрдЬрд╛ рдпрд╛ рдЕрд╕реАрдо рд╢реЛрд░ рдХреЗ рд╕рд╛рде, рдХреБрдЫ рдЦрд╛рд╕ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ - рд╣рдо рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рд╕рд╛рд░рдг рдПрдВрдЯреЗрдирд╛ (рдЪреИрдирд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд░реИрдВрдХ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП) рдХреЗ рдмреАрдЪ рд╢рдХреНрддрд┐ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рд╣рдо рдЖрдЧреЗ рдХрд╛рд░рдг:


рдФрд░ рдПрд╕рдПрдирдЖрд░ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ - \ ? рдпрд╣рд╛рдВ рд╣рдо рдЧрдгрд┐рдд рдореЗрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ, рд╣рдо рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рддрд░реНрдХ рдХрд░реЗрдВрдЧреЗ: рдпрд╣ рдорд╛рдорд▓рд╛ рдпрд╛ рддреЛ рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рд╢реЛрд░ рдпрд╛ рд╢реВрдиреНрдп рд╕рдВрдЪрд╛рд░рд┐рдд рд╢рдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рддреЛ, рдЗрд╕ рддрд░рд╣ рдФрд░ рд╡рд╣, рд╣рдорд╛рд░реА рдкреНрд░рдгрд╛рд▓реА, рд╡рд┐рдЪрд╛рд░ рдХрд░рддреА рд╣реИ, рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЧрд╛рдорд╛ рдХреЗ рд╕рд╛рде рд╕рд╡рд╛рд▓ рдЕрдкрдиреЗ рдЖрдк рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ...


рдпреЗ рдХрднреА-рдХрднреА рдРрд╕реЗ рдкреНрд░рд╢реНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкреНрд░реЛрдлреЗрд╕рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред


рдЧрдгрдирд╛ рдереНрд░реВрдкреБрдЯ (рдЕрдВрдд рдореЗрдВ!)


 def siso_capacity(H_chan, SNR_dB): SNR = 10**(SNR_dB/10) c = np.log2(1 + SNR*(np.abs(H_chan)**2)) return c def openloop_capacity(H_chan, SNR_dB): SNR = 10**(SNR_dB/10) Mt = np.shape(H_chan)[1] H_sq = np.dot(H_chan,np.matrix(H_chan, dtype=complex).H) lambdas = LA.eigvals(H_sq) lambdas = np.sort(lambdas)[::-1] c = 0 for eig in lambdas: c = c + np.log2(1 + SNR*eig/Mt) return np.real(c) def closedloop_capacity(H_chan, SNR_dB): SNR = 10**(SNR_dB/10) Mt = np.shape(H_chan)[1] H_sq = np.dot(H_chan,np.matrix(H_chan, dtype=complex).H) lambdas = LA.eigvals(H_sq) lambdas = np.real(np.sort(lambdas))[::-1] c = 0 gammas = waterpouring(Mt, SNR_dB, H_chan) for idx, item in enumerate(lambdas): c = c + np.log2(1 + SNR*item*gammas[idx]/Mt) return np.real(c) Mr = 4 Mt = 4 H_chan = (np.random.randn(Mr,Mt) \ + 1j*np.random.randn(Mr, Mt))/np.sqrt(2) #Rayleigh flat fading c = openloop_capacity(H_chan, 10) print(c) c = closedloop_capacity(H_chan, 10) print(c) c = siso_capacity(H_chan[0,0], 10) print(c) >>> 11.978909197556913 >>> 12.342571770086721 >>> 3.9058582578551193 

рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рдЖрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВред


рдПрд░реНрдЧреЛрдбрд┐рдХ рдХреНрд╖рдорддрд╛


рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдФрд░, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИред рднрд▓реЗ рд╣реА рдЪреИрдирд▓ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЕрд░реНрде рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реЛ, рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝реЗ рд╕реЗрдЯ рдкрд░ рдХреБрдЫ рдФрд╕рдд рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдпрд╣рд╛рдБ рдПрд░реНрдЧреЛрдбрд┐рдХ рдХреНрд╖рдорддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ:


\ hat {C} = E \ left \ {C \ right \} \ qquad (9)

рдЬрд╣рд╛рдБ E \ {* \} рдирд┐рдВрджрд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдкреЗрдХреНрд╖рд╛ (рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп)ред


рд╣рдо рдореЙрдбрд▓рд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред


 Mr = 4 Mt = 4 counter = 1000 SNR_dBs = [i for i in range(1, 21)] C_MIMO_CU = np.empty((len(SNR_dBs), counter)) C_MIMO_CK = np.empty((len(SNR_dBs), counter)) C_SISO = np.empty((len(SNR_dBs), counter)) C_SIMO = np.empty((len(SNR_dBs), counter)) C_MISO_CU = np.empty((len(SNR_dBs), counter)) C_MISO_CK = np.empty((len(SNR_dBs), counter)) for c in range(counter): H_MIMO = (np.random.randn(Mr,Mt) + 1j*np.random.randn(Mr, Mt))/np.sqrt(2) H_SISO = H_MIMO[0,0] H_SIMO = H_MIMO[:,0].reshape(Mr,1) H_MISO = H_MIMO[0,:].reshape(1,Mt) for idx, SNR_dB in enumerate(SNR_dBs): C_MIMO_CU[idx, c] = openloop_capacity(H_MIMO, SNR_dB) C_MIMO_CK[idx, c] = closedloop_capacity(H_MIMO, SNR_dB) C_SISO[idx, c] = siso_capacity(H_SISO, SNR_dB) C_SIMO[idx, c] = openloop_capacity(H_SIMO, SNR_dB) C_MISO_CU[idx, c] = openloop_capacity(H_MISO, SNR_dB) C_MISO_CK[idx, c] = closedloop_capacity(H_MISO, SNR_dB) C_MIMO_CU_erg = np.mean(C_MIMO_CU, axis=1) C_MIMO_CK_erg = np.mean(C_MIMO_CK, axis=1) C_SISO_erg = np.mean(C_SISO, axis=1) C_SIMO_erg = np.mean(C_SIMO, axis=1) C_MISO_CU_erg = np.mean(C_MISO_CU, axis=1) C_MISO_CK_erg = np.mean(C_MISO_CK, axis=1) plt.figure(figsize=(7, 5), dpi=600) plt.plot(SNR_dBs, C_MIMO_CU_erg,'g-o', label='$M_R=4$, $M_T=4$ (CU)') plt.plot(SNR_dBs, C_MIMO_CK_erg,'g-v', label='$M_R=4$, $M_T=4$ (CK)') plt.plot(SNR_dBs, C_MISO_CU_erg, 'm-o', label='$M_R=1$, $M_T=4$ (CU)') plt.plot(SNR_dBs, C_MISO_CK_erg, 'm-v', label='$M_R=1$, $M_T=4$ (CK)') plt.plot(SNR_dBs, C_SISO_erg, 'k-', label='$M_R=1$, $M_T=1$') plt.plot(SNR_dBs, C_SIMO_erg, 'c-', label='$M_R=4$, $M_T=1$') plt.title("Ergodic Capacity") plt.xlabel('SNR (dB)') plt.ylabel('Capacity (bps/Hz)') plt.legend() plt.minorticks_on() plt.grid(which='major') plt.grid(which='minor', linestyle=':') plt.show() 


рдЪрд┐рддреНрд░ 3ред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╕рд╛рд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреИрдВрдбрд╡рд┐рдбреНрде рдШрдЯрддрд╛ рд╣реИред [1, рдкреА рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВред 74]ред


рддреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐


  • MIMO рдХрд╛ рдорд╛рдорд▓рд╛ рджреВрд╕рд░реЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ SNR рдмрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде рдЪреИрдирд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ (рд╢рд┐рд╢реБрдУрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ)ред
  • рд╕рд┐рдореЛ MISO рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдЕрдЧрд░ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдЪреИрдирд▓ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ (MISO рдореЗрдВ рд╢рдХреНрддрд┐ рд╕рднреА рдПрдВрдЯреЗрдирд╛ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд╢рд╛рддреАрдд рдирд╣реАрдВ) рдФрд░ рдПрдХ рдЬреНрдЮрд╛рдд рдЪреИрдирд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ MISO рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
  • рдПрд╕рдЖрдИрдПрд╕рдУ рдХреЛ рдкреВрдВрдЫ рдореЗрдВ рд▓реИрд╢ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдФрд░ рдорд╣рд╛рдорд╣рд┐рдо рдЪреИрдирд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд░реИрдВрдХ рдкрд░ рд╢рд╛рд╕рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд╕рдВрдЪрд░рдг рдХреА рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдПрдВрдЯреЗрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред


рдРрд╕реА рдмрд╛рддреЗрдВред


рд╕рд╛рд╣рд┐рддреНрдп


(рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкреБрд╕реНрддрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреБрд╕реНрддрдХ рдХреНрдпрд╛ рд╣реИ!)


  1. рдкреЙрд▓рд░рд╛рдЬ, рдЖрд░реЛрдЧреНрдпрд╕реНрд╡рд╛рдореА, рд░реЛрд╣рд┐рдд рдирд╛рдмрд░, рдФрд░ рдзрдирдВрдЬрдп рдЧреЛрд░ред
    рд╕реНрдкреЗрд╕-рдЯрд╛рдЗрдо рд╡рд╛рдпрд░рд▓реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдкрд░рд┐рдЪрдпред рдХреИрдореНрдмреНрд░рд┐рдЬ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдкреНрд░реЗрд╕, 2003ред

Source: https://habr.com/ru/post/hi448570/


All Articles