概述
python 生成 Toeplitz 矩阵
首先导入必要的依赖文件
import numpy as np
from scipy.linalg import toeplitz
明确要实现的功能
Toeplitz 矩阵定义:链接
给定一个单数项的数列,如
[
−
2
,
−
1
,
0
,
1
,
2.
]
left[-2,-1,0,1,2.right]
[−2,−1,0,1,2.]
以中心项
0
0
0 为起点开始构造矩阵:
[
0
−
1
−
2
1
0
−
1
2
1
0
]
begin{bmatrix} 0&-1&-2 \ 1&0&-1 \ 2&1&0 end{bmatrix}
⎣⎡012−101−2−10⎦⎤
事实上,这是 Circulant 矩阵。在 Toeplize 的基础上,Circulant 进一步的要求是每一个行向量,是前一个行向量的循环右移一个元素。
通用代码
m = 4 # 中心项索引
N = 2 * m + 1 # 总共的项数
d = np.arange(1, N+1)
d2 = d[::-1]
t = toeplitz(d[m:], d2[m:])
print(t)
输出:
d = [1 2 3 4 5 6 7 8 9]
t =
[[5 4 3 2 1]
[6 5 4 3 2]
[7 6 5 4 3]
[8 7 6 5 4]
[9 8 7 6 5]]
[Finished in 0.5s]
写成函数
def gen_toeplitz(m, array):
'''
m: 中心项索引
array: 数列
'''
# N = 2 * m + 1 # 总共的项数
list2 = array[::-1] # 翻转
t_matrix = toeplitz(array[m:], list2[m:])
return t_matrix
太简单了,做个小笔记留存,以后万一用到。
调用一下,假设生成一个
5
×
5
5times 5
5×5 的 Toeplitz 矩阵,即
m
+
1
=
5
m+1=5
m+1=5。
if __name__ == '__main__':
m = 5-1
array = np.arange(2 * m + 1)
T_m = gen_toeplitz(m, array)
print(array)
print(T_m)
最后
以上就是等待万宝路为你收集整理的python 生成 Toeplitz 矩阵python 生成 Toeplitz 矩阵的全部内容,希望文章能够帮你解决python 生成 Toeplitz 矩阵python 生成 Toeplitz 矩阵所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复