Матричное умножение двух комплексных векторов в Simulink

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

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

Просто чтобы привести пример:

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 комплексных векторов

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам