栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 矩阵 将所有列向量合并成一个向量 将虚数矩阵转化为实数矩阵

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 矩阵 将所有列向量合并成一个向量 将虚数矩阵转化为实数矩阵

有M✖️N 维度的矩阵,将它转化为MN✖️1的矩阵

import numpy as np
from numpy import squeeze

M, N = 4, 3
h_mat = np.random.randn(M, N)
h_new = squeeze(h_mat.T.reshape(-1, 1))
print(h_new, h_mat, h_new.shape, h_mat.shape)
[-1.06950402  0.57459646  0.41926508  3.20023608 -0.8934199  -1.48817502
 -1.46684445  1.04572083 -0.2769263   0.83589263  0.34593235  0.34324631] 
 [[-1.06950402 -0.8934199  -0.2769263 ]
 [ 0.57459646 -1.48817502  0.83589263]
 [ 0.41926508 -1.46684445  0.34593235]
 [ 3.20023608  1.04572083  0.34324631]] 
 (12,) (4, 3)

将虚数矩阵转化为实数矩阵

这里m为N*1维矩阵

from numpy import real, imag
import numpy as np


mat = np.array([1, 2, 3, -1, -2, -3]) + 1j * np.array([1, 1, 1, 2, 2, 2])
real_mat = squeeze(real(mat).reshape(-1, 1))
img_mat = squeeze(imag(mat).reshape(-1, 1))
all_mat = np.hstack((real_mat, img_mat))
print(mat, "n", all_mat, "n", all_mat.shape)

vec_size = int(len(all_mat)/2)
real_part = all_mat[:vec_size,]
img_part = all_mat[vec_size:,]
recon_mat = real_part + 1j * img_part
np.array_equal(mat, recon_mat)

输出:

[ 1.+1.j  2.+1.j  3.+1.j -1.+2.j -2.+2.j -3.+2.j] 
 [ 1.  2.  3. -1. -2. -3.  1.  1.  1.  2.  2.  2.] 
 (12,)
True



两个类似的,一个负号的区别

import numpy as np
from numpy import real,imag
mat = np.array([1, 2, 3, -1, -2, -3]) + 1j * np.array([1, 1, 1, 2, 2, 2]).reshape(-1,1)
mat = mat * mat.T
real_mat = real(mat)
img_mat = imag(mat)
up = np.hstack((real_mat, -img_mat))
down = np.hstack((img_mat, real_mat))
all_mat = np.vstack((up, down))
print(all_mat)
#%%
mat_size = int(all_mat.shape[0]/2)
real_part = all_mat[:mat_size,:mat_size]
img_part = all_mat[mat_size:,:mat_size]
final_mat = real_part + 1j * img_part
np.array_equal(final_mat, mat)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号