Матричное умножение двух комплексных векторов в 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 бита, вместо того, чтобы хранить все полностью представленные комплексные числа и писать собственный фрагмент логики который использует этот факт для создания намного более простого комплексного множителя, чем универсальный.