Как объединить несколько матриц 2x2 в одну матрицу, которая уже существует? - PullRequest
1 голос
/ 10 июля 2019

Я новичок в Python, но использую Numpy для создания матриц, которые будут частью системы линейных уравнений, Ax = B.Сейчас я хочу определить A-матрицу, но у меня возникают проблемы с «объединением» имеющихся у меня матриц 2x2 в большую матрицу, соответствующую вектору состояний.

Помимо первой и последней строк, A-матрица является симметричной матрицей с матрицами 2x2 по диагонали (остальное - нули).Моя первая попытка состояла в том, чтобы создать нулевую матрицу и затем вставить вычисленные 2x2-матрицы (они вычисляются отдельно), но, поскольку результат сложный, он превратился в реальные значения.Это может быть хакерский способ добиться того, чего я хочу, поэтому я был бы признателен, если бы было лучшее решение.Заранее спасибо!

def impedance_matrix_A(self):      
    impedance_matrix = np.zeros((12,12))
    #Add A-matrices to impedance-matrix
    impedance_matrix[0:2,0:2] = self.A_back_load
    impedance_matrix[2:4,2:4] = self.A_o_backing
    impedance_matrix[4:6,4:6] = self.A_i_backing
    impedance_matrix[6:8,6:8] = self.A_composite
    impedance_matrix[8:10,8:10] = self.A_i_front
    impedance_matrix[10:12,10:12] = self.A_o_front
    impedance_matrix[10:12,10:12] = self.A_front_load
    #Removes layers where its zero
    impedance_matrix[~np.all(impedance_matrix == 0, axis=1)]
    print(impedance_matrix)
    return impedance_matrix

Матрицы A _... представляют собой сложные матрицы 2x2, рассчитанные в другом модуле

Это предупреждение, которое я получаю:

ComplexWarning: Casting complex values to real discards the imaginary part

Однако я хочувернуть матрицу с комплексными значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...