生成toeplitz矩阵的Python实现代码_python 生成拓普利兹矩阵库函数-程序员宅基地

技术标签: 矩阵  toeplitz矩阵  MATLAB  托普利兹矩阵  Python  

toeplitz矩阵即托普利兹矩阵

托普利兹矩阵的主对角线上的元素相等,平行于主对角线的线上的元素也相等;矩阵中的各元素关于次对角线对称,即T型矩阵为次对称矩阵。在数学软件MATLAB中,生成托普利兹矩阵的函数是:toeplitz(x,y)。它生成一个以 x 为第一列,y 为第一行的托普利兹矩阵,这里x, y均为向量,两者不必等长。

查看MATLAB生成托普利兹矩阵的函数toeplitz.m源代码文件请点击这里

我将根据其源代码逻辑,写成Python生成toeplitz矩阵的代码,首先注意下面的函数只针对:

  • 参数c与r都是由数字组成的二维数组,若要生成同一个二维数组的toeplitz矩阵,则需要输入该数组两次。
  • c与r二者左上角的那一个元素尽量要相同,尽管在不同时生成的矩阵也是toeplitz矩阵,但是参数r的第一个元素可能就不被包含在生成的toeplitz矩阵中了。
  • 数字为浮点型或者整型都可以
  • 若c与r为一维行向量或者列向量,则需要将其维数转换为1×N或者N×1的二维数组
import numpy as np

def toeplitz(c,r): #生成托普利茨矩阵
    c=np.array(c)
    r=np.array(r)
        
    #将c与r的全部元素构成列向量
    m,n=c.shape
    y,z=r.shape
    temp1=[]
    temp2=[]
    for i in range(n):
        for temp in c:
            temp1.append(temp[i])
    for i in range(z):
        for temp in r:
            temp2.append(temp[i])
    
    c=temp1
    r=temp2
    
    p=len(r)
    m=len(c)
    
    x=list(r[p-1:0:-1])
    for i in c:
        x.append(i)
    
    temp3=np.arange(0,m)
    temp4=np.arange(p-1,-1,-1)
    
    temp3.shape=(m,1)
    temp4.shape=(1,p)
    
    ij=temp3+temp4
    t=np.array(x)[ij]
    
    return t

示例1(两个输入参数为一维数组时,要在外层再加一层括号,使其变成二维的;这里c与r二者左上角的那一个元素不同,但是生成的矩阵仍是toeplitz矩阵,此时参数r的第一个元素就不被包含在生成的toeplitz矩阵中了):

toeplitz([[5,7,2,3]],[[4,2,3]])

输出如下:

array([[5, 2, 3],
       [7, 5, 2],
       [2, 7, 5],
       [3, 2, 7]])

示例2(若要生成同一个二维数组的toeplitz矩阵,则需要输入该数组两次):

toeplitz([[5,7,2,3]],[[5,7,2,3]])

输出如下:

array([[5, 7, 2, 3],
       [7, 5, 7, 2],
       [2, 7, 5, 7],
       [3, 2, 7, 5]])

示例3:

toeplitz([[5,7],[2,3]],[[9,8],[4,1]])

输出如下:

array([[5, 4, 8, 1],
       [2, 5, 4, 8],
       [7, 2, 5, 4],
       [3, 7, 2, 5]])

END

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40061206/article/details/123549481

智能推荐

python 分词字典的词性_Python 文本挖掘:jieba中文分词和词性标注-程序员宅基地

文章浏览阅读1.1k次。最近NLP新词发现及情感倾向性分类任务,需要用到分词,查找了下,python,jieba分词,貌似用起来还可以,效果也不差,还没在python里试中科院的分词。jieba 分词:做最好的Python 中文分词组件。这是结巴分词的目标,我相信它也做到了。操作简单,速度快,精度不错。而且是Python 的库,这样就不用调用中科院分词ICTCLAS了。妈妈再也不用担心我不会分词啦。jieba 的主页有详..._python词素

vue中使用echarts在地图上绘制散点图,并根据数值大小实现不同效果_echarts散点图数据动态颜色大小-程序员宅基地

文章浏览阅读7.7k次,点赞3次,收藏31次。1、echarts省市地图上根据数值大小给散点设置不同颜色,地图颜色不根据数值大小渲染,自己设置颜色<script> //引入基本模板 let echarts = require('echarts/lib/echarts') // 引入组件 require('echarts/lib/chart/map') // 引入地图js文件 ..._echarts散点图数据动态颜色大小

MATLAB绘图 最大化全屏后保存_matlab画图全屏-程序员宅基地

文章浏览阅读6.8k次,点赞5次,收藏21次。MATLAB绘图 最大化全屏后保存一、绘图[^1]二、图例[^2]添加图例的方式一:添加图例的方式二设置图例的排列方式图例的位置和列数显示指定曲线的图例图例背景和轮廓三、保存[^3]参考资料欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图_matlab画图全屏

解决Openwrt /etc/config目录下没有wireless文件的方法_openwrt没有无线选项-程序员宅基地

文章浏览阅读9.1k次。解决Openwrt /etc/config目录下没有wireless文件的方法一、环境说明Linux内核版本:4.4.9LEDE版本:17.01.4芯片:MT7628二、解决方法1、在以下网站中寻找MT7628支持的无线网卡驱动。网址:https://wireless.wiki.kernel.org/en/users/drivers2、在Manufacturer一栏找到MTK,点击左边的驱动名称,如下所示:看到支持MT76283、进入Openwrt源码的顶层目录,执行make men_openwrt没有无线选项

Halcon中两种实现旋转的方法rotate_image和affine_trans_image-程序员宅基地

文章浏览阅读4w次,点赞2次,收藏49次。Halcon中实现旋转的方式由两种。一种是rotate_image,该方式实现简单,但只能绕中心旋转。二是affine_trans_image,该方式实现较复杂,但是可以实现绕任意位置的旋转。_rotate_image

MySQL Workbench用csv格式导出以及出现数据乱码的解决_workbench导出csv乱码-程序员宅基地

文章浏览阅读4.8k次,点赞3次,收藏10次。近期毕设采集数据需从MySQL数据库中导出CSV文件,我用的是MySQL Workbench导出步骤:1、第一步,选中数据库表babynutrition,鼠标右键选择“数据导出”选项,打开导出弹窗,注意导出的数据格式2、第二步,选择导出表字段,需要导出多少行,从那行开始导出,确定后单击“Next”,进入下一步,如下图所示:3、第三步,选择导出文件路径,并填写导出文件名;选择导出..._workbench导出csv乱码

随便推点

unity3d游戏开发猜想——当程序猿老去-程序员宅基地

文章浏览阅读96次。 程序猿将代码注入生命去打造互联网的浪潮之巅。当有一天他们老了。会走向那里,会做些什么?非常多年以后,在我60岁的那天早晨,天刚蒙蒙亮我就起床了,先去公园晨练,然后回来做早餐(50岁的时候我学会了做饭)。送完外孙上学,刚好8点。因为北京从2020年開始单双月限行了,这个月是单月。所以仅仅能挤地铁。人一如既往的多,一小伙子要给我让座,看了看他的小身板,我说不用。你也是..._unity3d有35岁危机吗

Java 小程序:实现一个购物流程的功能-程序员宅基地

文章浏览阅读989次。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162..._java实现购买_一个简单的实现购买商品功能的java小程序

16、先天八卦与后天八卦各自有什么用途?-程序员宅基地

文章浏览阅读700次。http://www.360doc.com/content/13/0523/19/944966_287585372.shtml转载于:https://www.cnblogs.com/xue0/p/4798139.html_先天八卦与后天八卦各自有什么用途

BSD操作系统大盘点:四种主流BSD_盲点监测-程序员宅基地

文章浏览阅读9.4k次,点赞3次,收藏10次。【导读】本文将提供四个主要的BSD变体的对比,并且对基于服务器和台式电脑的解决方案提供一些建议。 那些要使用公共Unix变体的机构有两个可选解决方案inux和BSD。人们谈论比较多的Linux阵营包含了各种发布版软件。这些软件包括不同的工具和工具集。人们很少谈及的BSD阵营也是如此。本文将提供四个主要的BSD变体的对比,并且对基于服务器和台式电脑的解决方案提供一些建议。  BSD的_盲点监测

【JS】Es6无法注销事件 | class构造函数里无法注销事件解决方法(亲测有效)_js 注销事件-程序员宅基地

文章浏览阅读350次。【JS】Es6无法注销事件 | class构造函数里无法注销事件解决方法(亲测有效)_js 注销事件

iOS版本AppRTCMobile和webrtc.framework构建_webrtc 新增自定义模块方法-程序员宅基地

文章浏览阅读5.1k次。iOS版本AppRTCMobile和webrtc.framework构建_webrtc 新增自定义模块方法

推荐文章

热门文章

相关标签