一些创建特殊矩阵的内置函数的堆积

2024-08-30 04:58

本文主要是介绍一些创建特殊矩阵的内置函数的堆积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(1) 常用特殊矩阵
zeros():产生全0矩阵(零矩阵)     
ones():产生全1矩阵         
eye():产生单位矩阵
rand():产生0~1间均匀分布的随机矩阵;    
randn():产生均值为 0,方差为 1的标准正态分布随机矩阵
blkdiag(A,B) 以A,和B为块创建块对角矩阵
diag() 根据向量创建对角矩阵,即以向量的元素为对角元素


(2)范得蒙矩阵
vander(V):生成以向量V为基础向量的范得蒙矩
范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。


(3)希尔伯特矩阵
hilb(n):生成希尔伯特矩阵的函数
使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求 n阶的希尔伯特矩阵的逆矩阵。


(4) 托普利兹矩阵
托普利兹(Toeplitz)矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。
生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x, y均为向量,两者不必等长。toeplitz(x)用向量x生成一个对称的托普利兹矩阵。
例如   T=toeplitz(1:6)


(5) 伴随矩阵
MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。
例如,为了求多项式的x3-7x+6的伴随矩阵,可使用命令:
       p=[1,0,-7,6];
       compan(p)


(6) 帕斯卡矩阵
二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。
由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。
函数pascal(n)生成一个n阶帕斯卡矩阵。


(7)魔方数组 
魔方数组是一种较常用特殊数组,这种数组一定是正方形的,而且每一行,每一行的元素之和都相等。
magic(n)


(8)对角矩阵
以向量(在matlab中,1*n、n*1的矩阵都可以看做是一个向量)的形式返回一个矩阵上对角线元素。
X = diag(v,k)
其中v是一个含有n个元素的向量,该调用格式可以构造一个n+abs(k)阶的方阵X。并把v作为方阵X的第k条对角线(k大于0,表示主对角线上方的第k条对角线,k小于0表示主对角线下侧的第k条对角线,k等于0表示主对线)。
X = diag(v)等价于X = diag(v,0)
v = diag(X,k)以向量形式返回矩阵X中第k条对角线上的元素。
v = diag(X)等价于v = diag(X, 0)
相关函数:diag、rank、det、eig、blkdiag、spdiags


(9)测试矩阵
我们可以利用gallery函数来生成各种性质的测试矩阵。
其用法如下:
[A,B,C,...] = gallery(matname,P1,P2,...,classname)
其中matname表示矩阵性质,classname表示矩阵元素是single还是double。
例如 我们要在一个平面上随机生成10个点 并作出这些点的 voronoi diagram。
x = gallery('uniformdata',[1 10],0); 
y = gallery('uniformdata',[1 10],1); 
voronoi(x,y) 
结果为:其中 uniformdata 表示均匀分布, [1 10] 表示x是一个长度为10的数组,最后一个参数 ;0和1表示不同的矩阵,如果反复引用x = gallery('uniformdata',[1 10],0)  那么得到的数组总是相同的。


(10)Hadamard矩阵(哈达玛)
H=hadamard(n)
简单数组进行哈达玛变换的例子
A=[1 1 3 1
2 1 2 2]
for K=1:4
    wht(:,K)=hadamard(2)*A(:,K)/2
end %对每一列进行变换
for J=1:2
    B=wht(J,:)'
    hadamard(4)
    wh(:,J)=hadamard(4)*wht(J:)'/4

end %对wht的每一行进行变换得到wh


----------%n must be an integer and n, n/12 or n/20 must be a power of 2.



(11)Hilbert matrix 希尔矩阵
每个矩阵元素的值都等于 1/(行索引+列索引-1)。
>> a=hilb(3)
a =
    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500


(12)invhilb逆希尔伯特矩阵


由于希尔伯特矩阵中,数据的微小抖动都会引起逆矩阵的巨大变化,因此采用一般方法无法求希尔伯特矩阵的逆矩阵。MATLAB有专门的invhilb函数解决这个问题。
H=invhilb(n) 生成n阶希尔伯特逆矩阵。


eg:生成一个3阶希尔伯特逆矩阵。


>> invhilb(3)        %3阶希尔伯特逆矩阵  
ans =  
     9   -36    30  
   -36   192  -180  
    30  -180   180  


ps:用invhilb函数才能可靠地求出希尔伯特矩阵的逆矩阵。
    0.3333    0.2500    0.2000


(13)rosser 经典对称特征值测试矩阵


(14)toeplitz矩阵 常对角矩阵(从左上到右下分别对准,右上到左下无要求


做一般解n条线性方程的问题,其自由度2n-1,不是n^2
对于方阵,Toeplitz方阵可以描述为:任一条平行于主对角线的直线上的元素相同。
matlab中生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x, y均为向量,两者不必等长。


toeplitz(x)用向量x生成一个对称的托普利兹矩阵。有弱鲁棒性。
例如:T=toeplitz(1:6).


(15)Pascal矩阵


由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。
杨辉三角形表是二次项 (x+y)^n 展开后的系数随自然数 n 的增大组成的一个三角形表。
如4阶帕斯卡矩阵为:
Pascal(4)=
[1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20]
A=pascal(n),n为正整数,可得到阶数为n的帕斯卡矩阵


Pascal矩阵的第一行元素和第一列元素都为1,其余位置处的元素是该元素的左边元素加起上一行对应位置相加而得,如元素Ai,j=Ai,j-1+Ai-1,j。Ai,j表示第i行,第j列位置上的元素。


(16)vander函数
Vandermonde矩阵范德蒙矩阵,其第i 行、第j 列可以表示为(αi)^(j-1)。
范德蒙矩阵行数为m,列数为n,矩阵具有最大的秩max(m, n)。
应用之一就是在纠错编码中,常用的纠错码Reed-solomon 编码中冗余块的编码采用的即为范德蒙矩阵。




ps:里德-所罗门码(里所码,Reed-solomon codes,简称RS codes)


是一种前向错误更正的信道编码,对由校正过采样数据所产生的多项式有效。编码过程首先在多个点上对这些多项式求冗余,然后将其传输或者存储。对多项式的这种超出必要值得采样使得多项式超定(过限定)。
当接收器正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。
里德-所罗门码被广泛的应用于各种商业用途,最显著的是在CD、DVD和蓝光光盘上的使用;
在数据传输中,它也被用于DSL和WiMAX;广播系统中DVB和ATSC也闪现着它的身影;
在计算机科学里,它是RAID 6标准的重要成员。


是定长码。这意味着一个固定长度输入的数据将被处理成一个固定长度的输出数据。在最常用的(255,223)里所码中,223个里德-所罗门输入符号(每个符号有8个位元)被编码成255个输出符号。
大多数里所错误校正编码流程是成体系的。这意味着输出的码字中有一部分包含着输入数据的原始形式。
符号大小为8位元的里所码迫使码长(编码长度)最长为255个符号。

标准的(255,223)里所码可以在每个码字中校正最多16个里所符号的错误。由于每个符号事实上是8个位元,这意味着这个码可以校正最多16个短爆发性错误。


里德-所罗门码,如同卷积码一样,是一种透明码。这代表如果信道符号在队列的某些地方被反转,解码器一样可以工作。解码结果将是原始数据的补充。但是,里所码在缩短后会失去透明性。在缩短了的码中,“丢失”的比特需要被0或者1替代,这由数据是否需要补足而决定。(如果符号这时候反转,替代的0需要变成1)。于是乎,需要在里所解码前对数据进行强制性的侦测决定(“是”或者“补足”)。


这种码依靠一个代数理论,这个代数理论说明任何k个唯一的确定点表示一个阶数至少为k-1的多项式。
发送者表明一个在有限域中的k-1阶的多项式,它表示k个数据点。这个多项式就根据它在各点的赋值被“编码”,实际传送的是这些值。在传输中,一些值会被破坏。所以,实际发送的点不止k个。只要正确地接收了足量的数值,接收方就可以推算出原始多项式,进而译出原始数据。
同样的,我们可以通过插值来修正曲线。RS码可以将一组有错误序列的信息码转换到找回画出原始曲线的多项式的系数。


RS码的两种定义方式有着非常大的区别,而它们的等价关系并不是显而易见的。在第一种定义中,码字是多项式的值,而在第二种定义中,码字是多项式的系数。另外,第一种定义要求多项式具有特定的比较小的幂次,而在第二种定义中,多项式需要有特定的根。
这两种定义的等价性可以通过有限域上的离散傅立叶变换来证明。


(17)wilkinson函数
wilkinson特征值测试矩阵
W=wilkinson(n) 
生成n阶特征值测试矩阵,它是一个对称的三对角矩阵。
eg:生成4阶特征值测试矩阵。它是一个三角对矩阵。


>> wilkinson(4)    %4阶特征值测试矩阵  
ans =  
    1.5000    1.0000      0          0  
    1.0000    0.5000    1.0000       0  
       0      1.0000    0.5000    1.0000  
       0         0      1.0000    1.5000
 

这篇关于一些创建特殊矩阵的内置函数的堆积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119859

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约