Генерация блочной матрицы из заданной матричнозначной функции

#python #matrix #linear-algebra

Вопрос:

У меня есть следующая проблема. У меня есть некоторая функция A(l, l’), которая является матрицей NxN, и l, я выполняю некоторый набор (скажем -M, …, M). Меня интересует создание матрицы блоков (B)(l, l’)=A(l, l’) (в приведенном выше примере она имеет размерность (2 М 1)Nx(2 М 1)N), l, l’ блок задается A(l, l’). Насколько я могу судить, нет стандартной функции, которая бы это делала (хотя мне кажется, что это естественный способ получить матрицу блоков — с точки зрения ее блоков). Такие вещи, как NumPy block и NumPy concatenate, похоже, не способны на это (не стесняйтесь поправлять меня, если я ошибаюсь). Может ли кто-нибудь помочь мне разобраться в этом или указать мне правильное направление?

Я новичок в python и в этом сообществе, так что не судите меня слишком строго.

Заранее благодарю вас!

Комментарии:

1. Не могли бы вы, пожалуйста, показать пример ввода и ожидаемого вывода?

2. Дело в том, что я пока не знаю, что вводить. У меня просто есть(l, l’), и я хочу сгенерировать из него блочную матрицу и изо всех сил пытаюсь это сделать.

Ответ №1:

Вы можете достичь этого numpy.bmat следующим образом

 B = np.bmat([[A(i,j) for j in range(-M, M 1)] for i in range(-M, M 1)])
 

Сначала создается список списков матриц, а затем используется bmat, чтобы разместить их рядом

Комментарии:

1. Большое спасибо! Как оказалось, все очень просто.

2. Спасибо вам и добро пожаловать в сообщество.