我是靠谱客的博主 等待万宝路,最近开发中收集的这篇文章主要介绍python 生成 Toeplitz 矩阵python 生成 Toeplitz 矩阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

python 生成 Toeplitz 矩阵


首先导入必要的依赖文件

import numpy as np
from scipy.linalg import toeplitz

明确要实现的功能

Toeplitz 矩阵定义:链接
给定一个单数项的数列,如 [ − 2 , − 1 , 0 , 1 , 2. ] left[-2,-1,0,1,2.right] [21012.]
以中心项 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} 012101210
事实上,这是 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 矩阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部