草庐IT

MATLAB特殊矩阵

我真的不懂PDE 2023-04-03 原文

目录

通用的特殊矩阵

用于专门学科的特殊矩阵

1、魔方矩阵

2、范德蒙德(Vandermonde)矩阵

3、希尔伯特(Hilbert)矩阵

4、托普利兹(Toeplitz)矩阵

5、伴随矩阵

6、帕斯卡(Pascal)矩阵


MATLAB是由早期专门用于矩阵运算的科学计算软件发展而来的。

有一类具有特殊形式的矩阵被称为特殊矩阵,这些特殊矩阵在应用中具有通用性,还有一类在专门学科中得到应用。

通用的特殊矩阵

产生通用特殊矩阵的函数有以下几个。

(1) zeros:产生全0矩阵,也就是零矩阵

(2) ones:产生全1矩阵,也就是幺矩阵

(3) eye:产生单位矩阵

(4) rand:产生(0,1)区间均匀分布的随机矩阵

(5) randn:产生均值为0,方差为1的标准正态分布随机矩阵

这几个函数的调用格式相似,例:

zeros(m) 产生mm大小的零矩阵

zeros(m,n) 产生mn大小的零矩阵

zeros(size(A)) 产生和A矩阵相同大小的零矩阵

zeros

ans =

     0

ones

ans =

     1

eye

ans =

     1

rand

ans =

    0.6324

randn

ans =

   -1.3077
 
zeros(3)

ans =

     0     0     0
     0     0     0
     0     0     0

zeros(3,2)

ans =

     0     0
     0     0
     0     0

A=[1,1,1,1;1,1,1,1;1,1,1,1;1,1,1,1];
 
zeros(size(A))

ans =

     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0

用于专门学科的特殊矩阵

1、魔方矩阵

magic(n) 生成一个n阶的魔方矩阵

 魔方矩阵的一个有趣性质——对于n阶魔方矩阵,其元素由1、2、3、...、个整数组成,并且每行、每列以及两条对角线上的元素和都等于

magic(3)

ans =

     8     1     6
     3     5     7
     4     9     2

magic(5)

ans =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

M=100+magic(5)

M =

   117   124   101   108   115
   123   105   107   114   116
   104   106   113   120   122
   110   112   119   121   103
   111   118   125   102   109

2、范德蒙德(Vandermonde)矩阵

函数 vander(V)生成以向量V为基础向量的范德蒙德矩阵

A=vander([1;2;3;5])

A =

     1     1     1     1
     8     4     2     1
    27     9     3     1
   125    25     5     1

>> vander([1,2,3,4])

ans =

     1     1     1     1
     8     4     2     1
    27     9     3     1
    64    16     4     1

3、希尔伯特(Hilbert)矩阵

生成希尔伯特矩阵的函数是 hilb(n)

有一个专门求n阶希尔伯特矩阵的逆矩阵的函数 invhilb(n) 

希尔伯特矩阵是一种数学变换矩阵,他的每个元素是

值得一提的是希尔伯特矩阵是一个高度病态的矩阵,任何一个元素微小的变动,整个矩阵的值和逆矩阵都会发生很大的变化。

因为我们一般认为良性的矩阵应该是小的扰动产生一个小的偏差。

format rat  %以有理形式输出
H=hilb(4)

H =

       1              1/2            1/3            1/4     
       1/2            1/3            1/4            1/5     
       1/3            1/4            1/5            1/6     
       1/4            1/5            1/6            1/7     

H=invhilb(4)

H =

      16           -120            240           -140       
    -120           1200          -2700           1680       
     240          -2700           6480          -4200       
    -140           1680          -4200           2800       

format  %恢复默认输出格式

4、托普利兹(Toeplitz)矩阵

生成托普利兹矩阵的函数是 toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。如果x和y等长,可以用toeplitz(x)生成一个对称的托普利兹矩阵。

toeplitz((1:6),(1:5))

ans =

     1     2     3     4     5
     2     1     2     3     4
     3     2     1     2     3
     4     3     2     1     2
     5     4     3     2     1
     6     5     4     3     2

toeplitz(1:6)

ans =

     1     2     3     4     5     6
     2     1     2     3     4     5
     3     2     1     2     3     4
     4     3     2     1     2     3
     5     4     3     2     1     2
     6     5     4     3     2     1

5、伴随矩阵

注意此处的伴随矩阵不是线性代数里的伴随矩阵,他是伴随着一个多项式的矩阵,这个多项式称为是这个伴随矩阵的特征多项式,多项式的根就是这个伴随矩阵的特征值。

生成一个多项式p(x)的伴随矩阵的函数是compan(p)

p=[1,0,-7,6];

A=compan(p)

A =

     0     7    -6
     1     0     0
     0     1     0

>> eig(A)

ans =

   -3.0000
    2.0000
    1.0000

roots(p)

ans =

   -3.0000
    2.0000
    1.0000

6、帕斯卡(Pascal)矩阵

帕斯卡矩阵可用于求二项式展开的系数。我们知道展开的系数随着n的增大组成一个三角形表,也就是杨辉三角。帕斯卡矩阵的第一行和第一列元素都是1,其余位置的元素是该元素的左边元素和上一行的对应位置元素相加,也就是

 函数pascal(n)生成一个n阶的帕斯卡矩阵

注意了,如果要求的二项式展开系数那么应该用pascal(n+1), 然后依次取副对角线的元素就是所要的系数

pascal(6)

ans =

     1     1     1     1     1     1
     1     2     3     4     5     6
     1     3     6    10    15    21
     1     4    10    20    35    56
     1     5    15    35    70   126
     1     6    21    56   126   252

有关MATLAB特殊矩阵的更多相关文章

  1. ruby-on-rails - 标准化文件名的字符串,删除重音和特殊字符 - 2

    我正在尝试找到一种方法来规范化字符串以将其作为文件名传递。到目前为止我有这个:my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n,'').downcase.gsub(/[^a-z]/,'_')但第一个问题:-字符。我猜这个方法还有更多问题。我不控制名称,名称字符串可以有重音符、空格和特殊字符。我想删除所有这些,用相应的字母('é'=>'e')替换重音符号,并将其余的替换为'_'字符。名字是这样的:“Prélèvements-常规”“健康证”...我希望它们像一个没有空格/特殊字符的文件名:“prelevements_routin

  2. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  3. 旋转矩阵的几何意义 - 2

    点向量坐标矩阵的几何意义介绍旋转矩阵的几何含义之前,先介绍一下点向量坐标矩阵的几何含义点:在一维空间下就是一个标量,如同一条直线上,以任意某一个位置为0点,以一定的尺度间隔为1,2,3...,相反方向为-1,-2,-3...;如此就形成了一维坐标系,这时候任何一个点都可以用一个数值表示,如点p1=5,即即从原点出发沿着x轴正方向移动5个尺度;点p2=-3,负方向移动3个尺度;     在一维坐标系上过原点做垂直于一维坐标系的直线,则形成了二维坐标系,此时描述一个点需要两个数值来表示点p3=(3,2),即从原点出发沿着x轴正方向移动3个尺度,在此基础上沿着y轴正方向移动两个尺度的位置就是点p3。

  4. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  5. 华为OD机试真题 C++ 实现【带传送阵的矩阵游离】【2023 Q2 | 200分】 - 2

            所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。

  6. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  7. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  8. ruby-on-rails - ActionMailer HTML 编码 hell - 特殊字符替换为垃圾 - 2

    我有UTF-8字符串:Website•Facebook那是中间的一颗子弹又名•或0xE20x800xA2此值已正确存储在数据库中,并使用默认设置使用Rails3和ruby​​1.9.3正确显示在屏幕上。我正在尝试通过HTML电子邮件发送此邮件,但是当一切都说完之后,接收端看到的是垃圾:这背后的代码很简单,我有一个ActionMailer子类(默认使用UTF-8)设置以在布局中发送带有UTF-8内容编码的HTML电子邮件:email.html.erb布局文件:"all"%>内容使用与呈现网页相同的View,重要的一行是:我已经尝试了很多很多force_encoding的排列,e

  9. ruby - Ruby 中的特殊字符串拆分 - 2

    我正在尝试找出最好的方法...给定一个字符串s="ifsomeBool||x==1&&y!=22314"我想用Ruby来分隔语句和bool运算符..所以我想把它分成["if","someBool","||","x","==","1","&&","y","!=","22314"]我可以使用s.split(),但这只会以空格作为分隔符进行拆分..但我也希望x!=y也被拆分(它们是有效的bool语句,它们之间没有空格可读性好)。当然,最简单的方法是要求用户在bool运算符和变量之间放置空格,但是还有其他方法可以做到这一点吗? 最佳答案 按

  10. 欧拉角表示的姿态矩阵(313和312转序) - 2

    一、习惯约定图片来自PSINS(高精度捷联惯导算法)PSINS工具箱入门与详解.pptx二、基本旋转矩阵绕x轴逆时钟旋转α\alphaα角度Rx(α)=[ 1000cos⁡αsin⁡α0−sin⁡αcos⁡α]R_x(\alpha)=\begin{bmatrix}\1&0&0\\0&\cos\alpha&\sin\alpha\\0&-\sin\alpha&\cos\alpha\end{bmatrix}Rx​(α)=​ 100​0cosα−sinα​0sinαcosα​​绕y轴逆时钟旋转α\alphaα角度Ry(α)=[ cos⁡α0−sin⁡α010sin⁡α0cos⁡α]R_y(\alpha

随机推荐