MATLAB矩阵处理1——特殊矩阵

通用的特殊矩阵

下面介绍几个产生通用特殊矩阵的常用函数:

zeros()函数

产生全0矩阵,即零矩阵。

格式:

① zeros(m):产生m\times m的零矩阵

② zeros(m, n):产生m\times n的零矩阵

③ zeros(size(A)):产生与矩阵A同样大小的零矩阵(size(A)将返回矩阵A的行数和列数)

ones()函数

产生全1矩阵,即幺矩阵。

格式:

① ones(m):产生m\times m的幺矩阵

② ones(m, n):产生m\times n的幺矩阵

③ ones(size(A)):产生与矩阵A同样大小的幺矩阵(size(A)将返回矩阵A的行数和列数)

eye()函数

产生对角线为1的矩阵,当矩阵是方阵时,得到一个单位矩阵。

格式:

① eye(m):产生m\times m的矩阵

② eye(m, n):产生m\times n的矩阵

③ eye(size(A)):产生与矩阵A同样大小的矩阵(size(A)将返回矩阵A的行数和列数)

rand()函数

产生 (0 ,1) 区间均匀分布的随机矩阵(不包括0和1)。

格式:

① rand(m):产生m\times m的随机矩阵

② rand(m, n):产生m\times n的随机矩阵

③ rand(size(A)):产生与矩阵A同样大小的随机矩阵(size(A)将返回矩阵A的行数和列数)

randn()函数

产生均值为0,方差为1的标准正态分布随机矩阵。

格式:

① rand(m):产生m\times m的正态分布随机矩阵

② rand(m, n):产生m\times n的正态分布随机矩阵

③ rand(size(A)):产生与矩阵A同样大小的正态分布随机矩阵(size(A)将返回矩阵A的行数和列数)

例:产生5阶两位随机整数矩阵A,在产生均值为0.6、方差为0.1的5阶正态分布随机矩阵B,最后验证 (A+B)E = EA+BE(E为单位矩阵)。

思路:

rand()函数:产生 (0 ,1)开 区间均匀分布的随机数x。

fix(a+(b-a+1)*x):产生 [a, b] 区间上均匀分布的随机整数。

randn()函数:产生均值为0,方差为1的标准正态分布随机数x。

μ+σx:得到均值为\mu,方差为\sigma ^{2}的随即数。

>> A = fix(10+(99-10+1)*rand(5));
>> B = 0.6*sqrt(0.1)*randn(5);
>> E = eye(5);
>> (A+B)*E == E*A+B*E

ans =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

用于专门学科的特殊矩阵

魔方矩阵

n阶魔方矩阵由1,2,3,…,n^{2}n^{2}个整数组成,且每行、每列以及主、副对角线上各n个元素之和相等。和为 (n+n^{3}) / 2。

magic(n)函数产生一个特定的n阶魔方阵。

例:产生8阶魔方阵,求其每行每列元素之和。

M =

    64     2     3    61    60     6     7    57
     9    55    54    12    13    51    50    16
    17    47    46    20    21    43    42    24
    40    26    27    37    36    30    31    33
    32    34    35    29    28    38    39    25
    41    23    22    44    45    19    18    48
    49    15    14    52    53    11    10    56
     8    58    59     5     4    62    63     1

>> sum(M(1, :))            %行和

ans =

   260

>> sum(M(:, 1))            %列和

ans =

   260

范德蒙矩阵

对于向量\alpha =[\alpha _{1},\alpha _{2}, ...,\alpha _{n}],范德蒙矩阵的一般形式为:

 用vander(α)函数产生一个以向量α为基础的范德蒙矩阵。

>> V = vander(1:5)

V =

     1     1     1     1     1
    16     8     4     2     1
    81    27     9     3     1
   256    64    16     4     1
   625   125    25     5     1

范德蒙矩阵常用在各种通信系统的纠错编码中。例如,常用的Reed-Solomon编码即以范德蒙矩阵为基础。

希尔伯特矩阵

n阶希尔伯特矩阵的一般形式为:

希尔伯特矩阵的元素为H(i, j) = 1 / (i+j-1)。

hilb(n)函数生成n阶希尔伯特矩阵。

>> format rat
>> hilb(5)

ans =

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

希尔伯特矩阵是著名的病态矩阵,即任何一个元素发生较小的变动,整个矩阵的值和逆矩阵都会发生很大变化。病态程度和矩阵阶数相关,随着结阶数增加,病态程度更加严重。

伴随矩阵

 用compan(p)函数生成伴随矩阵,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂系数排在后。

例:生成多项式 x^{3}-2x^{2}-5x+6 的伴随矩阵。

>> p = [1, -2, -5, 6];
>> a = compan(p)

a =

       2              5             -6       
       1              0              0       
       0              1              0       

帕斯卡矩阵

根据二项式定理,(x+y)^{n} 展开后系数随着n的增大组成一个三角形表,即杨辉三角。

把二项式系数一次填写在矩阵的左侧对角线上然后提取左侧n行n列元素即为n阶帕斯卡矩阵。

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值