Матричное умножение двух комплексных векторов в Simulink - PullRequest
4 голосов
/ 10 мая 2011

На самом деле два вопроса, но я бы хотел сделать их более наглядными:

Я реализую модулятор, который включает умножение матриц сложного вектора:

Просто для примера:

cck_encoding_table(1,:)= [  1j  1  1j -1  1j  1 -1j  1 ];
cck_encoding_table(2,:)= [ -1j -1 -1j  1  1j  1 -1j  1 ];
cck_encoding_table(3,:)= [ -1j  1 -1j -1 -1j  1  1j  1 ];
cck_encoding_table(4,:)= [  1j -1  1j  1 -1j  1  1j  1 ];

По сути, мне нужно реализовать это в Simulink (Xilinx), в конце концов в Hardware:

cck_n_code=exp(1j*Phi1)*cck_encoding_table(index+1,:);

Мой вопрос, как моделировать умножение матриц со сложными векторами. Насколько я понимаю, использовать сложный множитель . Но это умножить только 2 комплексных вектора

Если бы мне пришлось умножить более 2 комплексных векторов за один такт, это было бы возможно.

Я не ожидаю никаких ответов, таких как сама модель, но возможный подход / направление, если таковые имеются, для решения проблемы

Спасибо за чтение, Киран

1 Ответ

4 голосов
/ 10 мая 2011

Просто запишите уравнения низкого уровня, полученные в результате умножения вашей матрицы. Каждый элемент выходных данных будет результатом суммирования набора умножений элементов из вашего входного вектора и матрицы.

Если вам нужно сделать это быстро, тогда сложите столько сложных множителей и сумматоров, сколько вам нужно, и подключите к ним входные элементы - это даст вам все ваши выходы одновременно и потребует от вас всех ваших входов доступны сразу.

В качестве альтернативы, поместите свои входные данные в блок памяти (или, возможно, 2, один для вектора, один для матрицы) и расположите некоторую логику, которая будет вводить правильный адрес в этот блок памяти для перебора элементов в соответствующем порядке. , Эти входы поступают на сложный множитель, а затем на сложный аккумулятор (вам, возможно, придется смоделировать его из сумматора и сбрасываемого регистра). Ваша логика управления должна периодически сбрасывать этот аккумулятор.

Выход аккумулятора может быть передан на следующую стадию или сохранен в другом блоке памяти (другой адрес для управления логикой управления).

если ваша таблица кодирования всегда будет иметь элементы, которые только из набора (1, -1, j, -j), то вы можете закодировать их как 2 бита, вместо того, чтобы хранить полностью полностью представленные комплексные числа и писать пользовательские часть логики, которая использует этот факт для создания намного более простого комплексного множителя, чем универсальный.

...