diagbfweights

Диагонализация канала MIMO

Описание

пример

[wp,wc] = diagbfweights(chanmat) возвращает веса предварительного кодирования, wp, и комбинируя веса, wc, для матрицы отклика канала, chanmat. Вместе эти веса диагонализируют канал в подканалы так, что матрица wp*chanmat*wc является диагональным.

пример

[wp,wc,P] = diagbfweights(chanmat) также возвращает распределенную степень, P, для каждого элемента передающего массива.

пример

[wp,wc,P,G] = diagbfweights(chanmat) также возвращает коэффициент усиления поднесущей G.

пример

[wp,wc,P,G,C] = diagbfweights(chanmat) также возвращает сумму пропускной способности канала, C.

пример

[___] = diagbfweights(chanmat,Pt) также задает общую степень передачи, Ptи возвращенные значения любой из предыдущих комбинаций выходных аргументов.

пример

[___] = diagbfweights(chanmat,Pt, Pn) также задает степень на передающую антенну, Pn.

пример

[___] = diagbfweights(chanmat,Pt, Pn,powdistoption) также задает распределение шума, powdistoption, по всем передающим антеннам.

Примеры

свернуть все

Вычислите матрицу канала для передающего массива URA 4 на 4 и принимающего массива URA 5 на 5. Предположим, что три рассеивателя расположены случайным образом в заданной угловой области значений. Интервалы между элементами для обоих массивов равны половине длины волны. Приёмный массив находится на расстоянии 500 длин волн от передающего массива вдоль оси X. Ограничьте угловой диапазон для передающих и приемных массивов. Диагонализируйте матрицу канала, чтобы вычислить веса предварительного кодирования и объединения.

Задайте передающий массив 4 на 4. Интервал между элементами указан в единицах длины волны.

Nt = 4;
sp = 0.5;
ygridtx = (0:Nt-1)*sp - (Nt-1)/2*sp;
zgridtx = (0:Nt-1)*sp - (Nt-1)/2*sp;
[ytx,ztx] = meshgrid(ygridtx,zgridtx);
txpos = [zeros(1,Nt*Nt);ytx(:).';ztx(:).'];

Задайте принимающий массив 5 на 5. Интервал между элементами указан в единицах длины волны.

Nr = 5;
sp = 0.5;
ygridrx = (0:Nr-1)*sp - (Nr-1)/2*sp;
zgridrx = (0:Nr-1)*sp - (Nr-1)/2*sp;
[yrx,zrx] = meshgrid(ygridrx,zgridrx);
rxpos = [500*ones(1,Nr*Nr);yrx(:).';zrx(:).'];

Установите угловые пределы для передачи и приема.

  • Пределы угла азимута для передатчика составляют − 45 ° до + 45 °.

  • Пределы угла азимута для приемника составляют − 75 ° до + 50 °.

  • Пределы угла возвышения для датчика составляют − 12 ° до + 12 °.

  • Пределы угла возвышения для приемника составляют − 30 ° до + 30 °.

angrange = [-45 45 -75 50; -12 12 -30 30];

Задайте три рассеивателя и создайте матрицу канала.

numscat = 3;
chmat = scatteringchanmtx(txpos,rxpos,numscat,angrange);

Диагонализируйте матрицу канала.

[wp,wc] = diagbfweights(chmat);
z = wp*chmat*wc;

Отображение первых четырех диагональных элементов.

z(1:4,1:4)
ans = 4×4 complex

  23.3713 + 0.0000i  -0.0000 + 0.0000i  -0.0000 + 0.0000i   0.0000 - 0.0000i
   0.0000 - 0.0000i  10.7803 + 0.0000i   0.0000 - 0.0000i  -0.0000 + 0.0000i
  -0.0000 - 0.0000i   0.0000 - 0.0000i   1.0566 + 0.0000i  -0.0000 - 0.0000i
  -0.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 - 0.0000i   0.0000 - 0.0000i

Вычислите матрицу канала для передающего массива URA 4 на 4 и принимающего массива URA 5 на 5. Предположим, что три рассеивателя случайным образом расположены в заданной угловой области значений. Интервалы между элементами для обоих массивов равны половине длины волны. Приёмный массив находится на расстоянии 500 длин волн вдоль оси X. Диагонализируйте матрицу канала, чтобы вычислить предварительное кодирование и объединение весов и распределенной степени.

Задайте передающий массив 4 на 4. Интервал между элементами указан в единицах длины волны.

Nt = 4;
sp = 0.5;
ygridtx = (0:Nt-1)*sp - (Nt-1)/2*sp;
zgridtx = (0:Nt-1)*sp - (Nt-1)/2*sp;
[ytx,ztx] = meshgrid(ygridtx,zgridtx);
txpos = [zeros(1,Nt*Nt);ytx(:).';ztx(:).'];

Задайте принимающий массив 5 на 5. Интервал между элементами указан в единицах длины волны.

Nr = 5;
sp = 0.5;
ygridrx = (0:Nr-1)*sp - (Nr-1)/2*sp;
zgridrx = (0:Nr-1)*sp - (Nr-1)/2*sp;
[yrx,zrx] = meshgrid(ygridrx,zgridrx);
rxpos = [500*ones(1,Nr*Nr);yrx(:).';zrx(:).'];

Установите угловые пределы для передачи и приема.

  • Пределы угла азимута для передатчика составляют − 45 ° до + 45 °.

  • Пределы угла азимута для приемника составляют − 75 ° до + 50 °.

  • Пределы угла возвышения для датчика составляют − 12 ° до + 12 °.

  • Пределы угла возвышения для приемника составляют − 30 ° до + 30 °.

angrange = [-45 45 -75 50; -12 12 -30 30];

Задайте три рассеивателя и создайте матрицу канала.

numscat = 3;
chmat = scatteringchanmtx(txpos,rxpos,numscat,angrange);

Диагонализируйте матрицу канала и верните распределенную степень.

[wp,wc,P] = diagbfweights(chmat);
disp(P.')
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625
    0.0625

Вычислите матрицу канала для 11-элементного передающего массива ULA и 7-элементного принимающего массива ULA. Предположим, что существует пять случайным образом расположенных рассеивателей. Интервалы между элементами для обоих массивов равны половине длины волны. Приёмный массив находится на расстоянии 500 длин волн от передающего массива вдоль оси X. Диагонализируйте матрицу канала, чтобы вычислить веса предварительного кодирования и объединения, распределенную степень и усиления подканала.

Задайте передающий массив ULA с 11 элементами. Интервал между элементами указан в единицах длины волны.

Nt = 11;
sp = 0.5;
txpos = (0:Nt-1)*sp - (Nt-1)/2*sp;

Задайте 7-элементный принимающий массив ULA. Интервал между элементами указан в единицах длины волны.

Nr = 7;
sp = 0.5;
rxpos = (0:Nr-1)*sp - (Nr-1)/2*sp;
numscat = 5;
chmat = scatteringchanmtx(txpos,rxpos,numscat);

Диагонализируйте матрицу канала и верните коэффициент усиления подканала.

[wp,wc,P,G] = diagbfweights(chmat);
disp(G.')
  221.8345
   56.8443
   47.6711
    0.8143
    0.0000
    0.0000
    0.0000

Вычислите матрицу канала для 11-элементного передающего массива ULA и 7-элементного принимающего массива ULA. Предположим, что существует пять случайным образом расположенных рассеивателей. Интервалы между элементами для обоих массивов равны половине длины волны. Приёмный массив находится на расстоянии 500 длин волн от передающего массива вдоль оси X. Создайте матрицу канала с двумя поднесущими. Диагонализируйте матрицу канала, чтобы вычислить веса предварительного кодирования и объединения, распределенную степень, усиления подканала и сумму пропускной способности канала.

Задайте передающий массив ULA с 11 элементами. Интервал между элементами указан в единицах длины волны.

Nt = 11;
sp = 0.5;
txpos = (0:Nt-1)*sp - (Nt-1)/2*sp;

Задайте 7-элементный принимающий массив ULA. Интервал между элементами указан в единицах длины волны.

Nr = 7;
sp = 0.5;
rxpos = (0:Nr-1)*sp - (Nr-1)/2*sp;
numscat = 5;

Создайте две поднесущие.

chmat1 = scatteringchanmtx(txpos,rxpos,numscat);
chmat2 = scatteringchanmtx(txpos,rxpos,numscat);
chmat(1,:,:) = chmat1;
chmat(2,:,:) = chmat2;

Диагонализируйте матрицу канала и верните коэффициент усиления подканала.

[wp,wc,P,G,C] = diagbfweights(chmat);
disp(C.')
    9.5466    9.3605

Вычислите матрицу канала для 11-элементного передающего массива ULA и 7-элементного принимающего массива ULA. Задайте общую передаваемую степень в 1000. Предположим, что существует пять случайным образом расположенных рассеивателей. Интервалы между элементами для обоих массивов равны половине длины волны. Приёмный массив находится на расстоянии 500 длин волн от передающего массива вдоль оси X. Создайте матрицу канала с двумя поднесущими. Диагонализируйте матрицу канала, чтобы вычислить веса предварительного кодирования и объединения, распределенную степень, усиления подканала и сумму пропускной способности канала.

Задайте передающий массив ULA с 11 элементами. Интервал между элементами указан в единицах длины волны.

Nt = 11;
sp = 0.5;
txpos = (0:Nt-1)*sp - (Nt-1)/2*sp;

Задайте 7-элементный принимающий массив ULA. Интервал между элементами указан в единицах длины волны.

Nr = 7;
sp = 0.5;
rxpos = (0:Nr-1)*sp - (Nr-1)/2*sp;
numscat = 5;

Создайте две поднесущие.

chmat1 = scatteringchanmtx(txpos,rxpos,numscat);
chmat2 = scatteringchanmtx(txpos,rxpos,numscat);
chmat(1,:,:) = chmat1;
chmat(2,:,:) = chmat2;

Диагонализируйте матрицу канала и верните распределенную степень для обеих поднесущих.

Pt = 1000.0;
[wp,wc,P,G,C] = diagbfweights(chmat,Pt);
disp(P.')
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091
   90.9091   90.9091

Вычислите матрицу канала для 11-элементного передающего массива ULA и 7-элементного принимающего массива ULA. Задайте общую степень передачи на 1000 и степень шума передающей антенны на 100. Предположим, что существует пять случайным образом расположенных рассеивателей. Интервалы между элементами для обоих массивов равны половине длины волны. Приёмный массив находится на расстоянии 500 длин волн от передающего массива вдоль оси X. Создайте матрицу канала с двумя поднесущими. Диагонализируйте матрицу канала, чтобы вычислить веса предварительного кодирования и объединения, распределенную степень, усиления подканала и сумму пропускной способности канала.

Задайте передающий массив ULA с 11 элементами. Интервал между элементами указан в единицах длины волны.

Nt = 11;
sp = 0.5;
txpos = (0:Nt-1)*sp - (Nt-1)/2*sp;

Задайте 7-элементный принимающий массив ULA. Интервал между элементами указан в единицах длины волны.

Nr = 7;
sp = 0.5;
rxpos = (0:Nr-1)*sp - (Nr-1)/2*sp;
numscat = 5;

Создайте две поднесущие.

chmat1 = scatteringchanmtx(txpos,rxpos,numscat);
chmat2 = scatteringchanmtx(txpos,rxpos,numscat);
chmat(1,:,:) = chmat1;
chmat(2,:,:) = chmat2;

Диагонализируйте матрицу канала и верните коэффициент усиления для обеих поднесущих.

Pt = 1000.0;
Pn = 100.0;
[wp,wc,P,G,C] = diagbfweights(chmat,Pt,Pn);
disp(G.')
  221.8345  119.7549
   56.8443  115.9814
   47.6711   24.9780
    0.8143    5.1025
    0.0000    0.0059
    0.0000    0.0000
    0.0000    0.0000

Вычислите матрицу канала для 11-элементного передающего массива ULA и 7-элементного принимающего массива ULA. Задайте общую степень передачи на 1000 и степень шума передающей антенны на 100. Задайте распределение передаваемой степени следующим 'Waterfill'. Предположим, что существует пять случайным образом расположенных рассеивателей. Интервал между элементами для обоих массивов равен половине длины волны. Приёмный массив находится на расстоянии 500 длин волн от передающего массива вдоль оси X. Создайте матрицу канала с двумя поднесущими. Диагонализируйте матрицу канала, чтобы вычислить веса предварительного кодирования и объединения, распределенную степень, усиления подканала и сумму пропускной способности канала.

Задайте передающий массив ULA с 11 элементами. Интервал между элементами указан в единицах длины волны.

Nt = 11;
sp = 0.5;
txpos = (0:Nt-1)*sp - (Nt-1)/2*sp;

Задайте 7-элементный принимающий массив ULA. Интервал между элементами указан в единицах длины волны.

Nr = 7;
sp = 0.5;
rxpos = (0:Nr-1)*sp - (Nr-1)/2*sp;
numscat = 5;

Создайте две поднесущие.

chmat1 = scatteringchanmtx(txpos,rxpos,numscat);
chmat2 = scatteringchanmtx(txpos,rxpos,numscat);
chmat(1,:,:) = chmat1;
chmat(2,:,:) = chmat2;

Диагонализируйте матрицу канала и верните коэффициент усиления для обеих поднесущих.

Pt = 1000.0;
Pn = 100.0;
[wp,wc,P,G,C] = diagbfweights(chmat,Pt,Pn,'Waterfill');
disp(G.')
  221.8345  119.7549
   56.8443  115.9814
   47.6711   24.9780
    0.8143    5.1025
    0.0000    0.0059
    0.0000    0.0000
    0.0000    0.0000

Входные параметры

свернуть все

Матрица отклика канала, заданная как Nt -by- Nr комплексно-значимая матрица или L -by- Nt -by- Nr комплексно-значимый массив MATLAB.

  • Nt - количество элементов в передающем массиве.

  • Nr - количество элементов в принимающем массиве.

  • L - количество поднесущих.

Когда chanmat - массив MATLAB, содержащий поднесущие, каждая поднесущая разлагается независимо в подканалы.

Типы данных: double
Поддержка комплексного числа: Да

Полная степень передачи, заданная как положительный скаляр или L элемент положительных значений. Pt имеет те же модули, что и общая распределенная степень, P.

Типы данных: double

Шумовая степень в каждой приемной антенне, заданная как положительная скалярная величина. Pn имеет те же модули, что и общая степень передачи, Pt.

Типы данных: double

Опция распределения степени, заданная как 'Uniform' или 'Waterfill'. Когда powdistoption является 'Uniform', степень передачи равномерно распределена по всем каналам Nt. Если powdistoption является 'Waterfill', степень передачи распределена по Nt каналам с помощью алгоритма заполнения водой.

Типы данных: char

Выходные аргументы

свернуть все

Веса предварительного кодирования, возвращенные как Nt -by Nt комплексно-значимая матрица или L -by Nt -by Nt комплексно-значимый массив MATLAB. Модули безразмерны.

Типы данных: double
Поддержка комплексного числа: Да

Объединение весов, возвращенное как Nr -by Nr комплексно-значимая матрица или L -by Nr -by Nr комплексно-значимый массив MATLAB. Модули безразмерны.

Типы данных: double
Поддержка комплексного числа: Да

Распределенная степень, возвращенная как вектор или матрица.

  • Когда chanmat является Nt -by Nr вещественной матрицей, P является вектором-строкой 1 байт Nt реальное значение.

  • Когда chanmat является L -by- Nt -by- Nr вещественным массивом MATLAB, P является L -by Nt вещественной матрицей.

Силовые модули линейные.

Типы данных: double

Коэффициент усиления подканала, возвращенный как вектор или матрица.

  • Когда chanmat - Nt -by Nr комплексная матрица, G является вектором-строкой с 1-байтовым Ng комплексным значением.

  • Когда chanmat является L -by- Nt -by- Nr комплексным массивом MATLAB, G является L -by Ng комплексно-оцененной матрицей.

Ng меньше из Nt и Nr.

Модули усиления линейны.

Типы данных: double
Поддержка комплексного числа: Да

Сумма пропускной способности канала для каждой поднесущей, возвращаемая в виде скаляра или вектора.

  • Когда chanmat - Nt -by Nr комплексная матрица, C является скаляром.

  • Когда chanmat является L -by- Nt -by- Nr комплексным массивом MATLAB, C является вектором L -by-1.

Модули измерения производительности указаны в бит/с/Гц.

Типы данных: double
Поддержка комплексного числа: Да

Ссылки

[1] Heath, R. Jr. et al. «Обзор методов обработки сигналов для MIMO-систем волны миллиметра», arXiv.org:1512.03007 [c.IT], 2015.

[2] Tse, D. and P. Viswanath, Fundamentals of Wireless Communications, Cambridge: Cambridge University Press, 2005.

[3] Paulraj, A. Введение в Space-Time Wireless Communications, Cambridge: Cambridge University Press, 2003.

Расширенные возможности

.

См. также

Функции

Объекты

Введенный в R2017a