利用MATLAB构建特殊通用矩阵

这篇具有很好参考价值的文章主要介绍了利用MATLAB构建特殊通用矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在MATLAB编程中,经常需要遇到一些特殊的通用矩阵,本篇主要介绍的是MATLAB中可能会用到特殊矩阵。

1、零矩阵

MATLAB使用zeros函数来创建零矩阵,所谓零矩阵就是矩阵中所有元素皆为0的矩阵。zeros函数的调用方式如下所示:

(1)zeros(n):n为常数,生成一个n×n的矩阵。

例如,生成一个4×4的零矩阵的代码为:

a=zeros(4)

运行结果如下所示:

a =
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0

当n的值省略的时候,那么生成一个1×1的向量,结果如下所示:

ans =

     0

(2)zeros(m,n):m,n均为常数,生成一个m×n的零矩阵。生成一个m×n的零矩阵也可以写成zeros([m,n])的方式。

例如生成一个3×4的零矩阵的代码如下:

a=zeros(3,4)

运行结果如下所示:

a =
     0     0     0     0
     0     0     0     0
     0     0     0     0

(3)zeros(size(A)):A为矩阵,zeros生成一个与矩阵A相同行和列的零矩阵。

例如:

A=[3,4,5;2,7,8];
a=zeros(size(A))

运行结果如下所示:

a =
     0     0     0
     0     0     0

(4)zeros(m,n,'like',p):p为矩阵,生成一个与p类型相同,大小为m行n列的零矩阵。

例如:

p=[2+1i,3;4,2+3i];
zeros(3,2,'like',p)

在上述代码段中的p矩阵为一个复数矩阵,那么matlab中所求的结果应为一个3行2列的复数矩阵。运行结果如下所示:

ans =
   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i

(5)zeros(m,n,typename):生成一个m行n列的矩阵,其中矩阵的中所有元素的类型通过typename指定的。

例如,生成一个3行4列的int类型的矩阵代码如下所示:

a=zeros(3,4,'int16')

运行结果如下所示:

a =

  3×4 int16 矩阵

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

在例如,生成一个3行4列的logical类型的矩阵代码如下所示:

a=zeros(4,4,'logical')

运行结果如下如所示:

a =

  4×4 logical 数组

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

在typename中可以选择的值包括:'double'、'single'、‘logical’、‘int8‘、’int16‘、'int32'、’uint8‘、'uint16'、’uint32‘或者是zeros函数支持的其他类的名称。

(5)flase函数

在MATLAB中,false函数用于生成全为0的逻辑矩阵。

例如,生成一个3行4类的全0逻辑矩阵,代码如下所示:

a=false(3,4)

运行结果如下所示:

a =

  3×4 logical 数组

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

需要注意的是,false(3,4)和zeros(3,4,'logical')所达成的效果是相同的。

2、幺矩阵

在线性代数中,矩阵中的所有元素的值全为1的矩阵的称为幺矩阵,在MATLAB中初始化幺矩阵通常使用ones函数,其中ones函数所使用的调用格式与zeros函数类似。

(1)例如,建立一个4行6列的ones函数的代码如下所示:

a=ones(4,6)

运行结果如下所示:

a =

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

通过与zeros函数进行类比,可以对于ones函数使用相同的操作。

(2)true函数

在MATLAB中,true函数用于生成全为1的逻辑矩阵。

例如,生成一个3行4类的全1逻辑矩阵,代码如下所示:

a=true(3,4)

运行结果如下所示:

a =

  3×4 logical 数组

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

需要注意的是,true(3,4)和ones(3,4,'logical')所达成的效果是相同的。

3、eye函数

在MATLAB中,eye函数可以初始化单位矩阵,即对角线上元素均为1其余元素均为0的方阵。

例如初始化一个3行3列的单位矩阵代码如下:
 

a=eye(3,3)

运行结果如下所示:

a =
     1     0     0
     0     1     0
     0     0     1

需要注意的是,eye函数不仅可以初始化单位矩阵,同时可以初始化行和列不相同的矩阵,其中主对角线的元素全为1,其余元素均为0。例如:

a=eye(3,4)
b=eye(4,3)

运行结果如下所示:

a =
     1     0     0     0
     0     1     0     0
     0     0     1     0
b =
     1     0     0
     0     1     0
     0     0     1
     0     0     0

4、随机矩阵

在MATLAB中,有多个函数用于生成随机矩阵,包括rand函数、randi函数、randn函数和randperm函数:

(1)rand(m,n):生成一个m行n列的矩阵,矩阵中所有元素的值均在0-1之间。

例如初始化一个3行4列的随机矩阵,代码如下:

a=rand(3,4)

运行结果如下所示:

a =
    0.8147    0.9134    0.2785    0.9649
    0.9058    0.6324    0.5469    0.1576
    0.1270    0.0975    0.9575    0.9706

(2)randi(imax,m,n):生成一个m行n列的矩阵,其中矩阵的所有元素为[1,imax]均匀分布的随机矩阵。

例如初始化一个4行5列,元素从[1,6]之间的矩阵,代码如下所示:

a=randi(6,4,5)

运行结果如下所示:

a =
     6     3     4     5     4
     3     6     1     5     2
     5     5     6     5     5
     1     6     6     3     1

(3)randn(m,n):生成一组3行4列的矩阵,其中矩阵中的所有元素为平均值为0、方差为1的标准正太分布随机数。

例如,初始化一个均值为0、方差为1的4行5列的矩阵,代码如下所示:

a=randn(4,5)

运行结果如下所示:

a =
    0.6007    1.5326    1.1174    1.1006   -0.7423
   -1.2141   -0.7697   -1.0891    1.5442   -1.0616
   -1.1135    0.3714    0.0326    0.0859    2.3505
   -0.0068   -0.2256    0.5525   -1.4916   -0.6156

(4)randperm(n,k):将[1,n]的整数随机排列,生成一个指定长度为k的向量:

例如初始化一个长度为6,将[1,6]之间的整数随机排列的向量:

a=randperm(6,6)

运行结果如下所示:

a =
     2     1     5     3     4     6

需要注意的是randperm(n,k)中,但k的小于n时(k必须小于等于n),运行结果是随机选取k个[1,n]的整数进行随机排列的向量。

例如,初始化一个长度为4,将区间[1,6]的整数随机排列的向量,代码如下所示:

a=randperm(6,4)

运行结果如下所示:

a =

     3     6     4     1

5、魔方矩阵

魔方矩阵又称幻方、九宫格、纵横线,是有相同的行数和列数,并在每行每列、对角线上的和都相等的矩阵,其中矩阵的每一行以及每一列的和均为利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数。魔方矩阵中的每个元素不能相同。(本段定义参考百度百科魔方矩阵)

在MATLAB中,提供magic函数来生成一个魔方矩阵,调用格式如下所示:

magic(n):生成n阶的魔方矩阵。

例如生成一个4阶的魔方矩阵,代码如下所示:

a=magic(4)

运行结果如下所示:

a =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

6、范德蒙德矩阵

使用MATLAB所生成的范德蒙德矩阵中,最后一列的元素全为1,倒数第二列的元素为用户指定的向量,而其余列是其后一列向量与倒数第二列向量的点乘积。在MATLAB中,使用vander函初始化一个范德蒙德矩阵。

例如,初始一个倒数第二行元素从上到下依次是1、3、4、7、8的5阶矩阵,代码如下:

a=vander([1,3,4,7,8])

运行结果如下所示:

a =
           1           1           1           1           1
          81          27           9           3           1
         256          64          16           4           1
        2401         343          49           7           1
        4096         512          64           8           1

7、帕斯卡矩阵

帕斯卡矩阵是由利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数展开之后系数随n的增大组成的三角形表,又称为杨辉三角表。其矩阵的第1行和第1列的元素均为1,其余第i行第j列的元素利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数。在MATLAB中使用pascal函数生成一个n阶帕斯卡矩阵。

例如,生成一个5阶帕斯卡矩阵,代码如下:

a=pascal(5)

运行结果如下所示:

a =
     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70

同时帕斯卡矩阵可以计算利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数的展开式中各项的系数,第1至第n项的系数为从、...例如计算利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数的展开式的系数:

a=pascal(4)

运行结果如下所示:

a =
     1     1     1     1
     1     2     3     4
     1     3     6    10
     1     4    10    20

利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数的各项系数为顺着副对角线从左下角至右上角(或从右上角值左下角)各个元素的值,即:利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数

8、托普利兹矩阵

托普利兹矩阵是矩阵第一行和第一列的元素,其他元素都是和左上角的元素相同。在MATLAB中,toeplitz(v1,v2):v1和v2分别表示托普利兹矩阵的第一列的列向量和第一行的行向量。其中v1向量和v2向量的首元素必须相同。

例如初始化化一个托普利兹矩阵:

 a=toeplitz([4,3,2,6],[4,6,9,10,12])

运行结果如下所示:

a =
     4     6     9    10    12
     3     4     6     9    10
     2     3     4     6     9
     6     2     3     4     6

9、希尔伯特矩阵

希尔伯特矩阵是一个数学变化矩阵,每个元素的值利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数,希尔伯特矩阵是个高度病态的矩阵(即任何一个元素发生变化,整个矩阵的行列式和逆矩阵都会发生巨大变化),MATLAB提供了hilb函数生成希尔伯特矩阵。其中hilb函数有两种调用格式:

hilb(n):n为常数,返回一个n阶的希尔伯特矩阵。

hilb(n,classname):n为常数,表示的是希尔伯特矩阵的阶数,classname表示矩阵的类,classname的矩阵的类,可以取值为‘double’和‘single’,其中默认值为‘double’。

例如初始化一个4阶希尔伯特矩阵:

a=hilb(4)

运行结果如下所示:

a =
    1.0000    0.5000    0.3333    0.2500
    0.5000    0.3333    0.2500    0.2000
    0.3333    0.2500    0.2000    0.1667
    0.2500    0.2000    0.1667    0.1429

在例如初始化一个single类的5阶矩阵。

a=hilb(5,'single')

运行结果如下所示:

a =

  5×5 single 矩阵

    1.0000    0.5000    0.3333    0.2500    0.2000
    0.5000    0.3333    0.2500    0.2000    0.1667
    0.3333    0.2500    0.2000    0.1667    0.1429
    0.2500    0.2000    0.1667    0.1429    0.1250
    0.2000    0.1667    0.1429    0.1250    0.1111

MATLAB中有专门求希尔伯特矩阵的逆矩阵的函数invhilb函数,当n小于15时,invhilb(n)生成希尔伯特矩阵的精确的逆矩阵,当n大于15时,invhilb(n)生成的是Hilbert矩阵的近似矩阵。

10、伴随矩阵

MATLAB对于一个多项式利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数的伴随矩阵为:

方程p(x)的根称为A的特征值。

MATLAB生成使用compan函数生成伴随矩阵,例如求利用MATLAB构建特殊通用矩阵,数学建模,矩阵,matlab,线性代数的伴随矩阵,代码如下:

运行结果如下所示:

a=compan([4,5,12,4,6])

运行结果如下所示:

a =

   -1.2500   -3.0000   -1.0000   -1.5000
    1.0000         0         0         0
         0    1.0000         0         0
         0         0    1.0000         0

11、级联矩阵

MATLAB将用指定方向进行合并两个或者多个矩阵,函数调用如下如下:

(1)cat(dim,A1,A2,A3,A4,...An):在指定维度合并矩阵,cat(1,A,B)等同于cat(1,A,B)等同于[A;B],而cat(2,A,B)等同于[A,B]。

例如将三个矩阵的纵向合并矩阵:

A=[1,2,3;4,3,5];
B=[1,2,1;5,4,1];
C=[0,1,6;7,3,1];
D=cat(1,A,B,C)
E=cat(2,A,B,C)

运行结果如下:

D =
     1     2     3
     4     3     5
     1     2     1
     5     4     1
     0     1     6
     7     3     1

E =
     1     2     3     1     2     1     0     1     6
     4     3     5     5     4     1     7     3     1

(2)horzcat(A1,A2,...An):横向合并矩阵,horzcat(A,B)等同于[A,B]。

例如:

A=[1,3;4,6;3,1];
B=[3,2;1,4;5,1];
A=horzcat(A,B)

运行结果如下所示:

A =
     1     3     3     2
     4     6     1     4
     3     1     5     1

(3)horzcat(A1,A2,...An):纵向合并矩阵,horzcat(A,B)等同于[A;B]。

例如:

A=[1,3,4;6,3,1];
B=[3,2,1;4,5,1];
A=vertcat(A,B)

运行结果如下所示:

A =
     1     3     4
     6     3     1
     3     2     1
     4     5     1

(4)repmat(A,m,n):复制矩阵A来构造一个新的矩阵,其中纵向复制m个A,横向复制有n个A。

例如:

A=[1,4;5,8]
A=repmat(A,2,3)

运行结果如下所示:

A =
     1     4     1     4     1     4
     5     8     5     8     5     8
     1     4     1     4     1     4
     5     8     5     8     5     8

12、累计矩阵

在MATLAB中,使用accumarray对于指定的向量进行累计,然后用计算的结果构造一个新的矩阵。accumarray有如下几种调用格式:

(1)accumarray(subs,val):subs是下标矩阵或者是向量,而val是数据,val可以是一个标量或者是一个向量。

当subs是一个向量时:

val=1;
subs=[1;2;5;2;4];
a=accumarray(subs,val)

运行结果如下所示:

a =
     1
     2
     0
     1
     1

由上图中的运行显示,返回的是一个计数向量,表示的subs向量中下标出现次数与val的积。如果将val的值改为2:

val=2;
subs=[1;2;5;2;4];
a=accumarray(subs,val)

运行结果如下所示:

a =
     2
     4
     0
     2
     2

对比两次运行结果可以看到,当val变化增加一倍时,返回的结果也同样增加一倍。

当val是一个向量时:

val=10:10:50;
subs=[1;2;5;3;4];
a=accumarray(subs,val)

运行结果如下所示:

a =
    10
    20
    40
    50
    30

当subs是一个二维矩阵的时候,subs矩阵中的每行是val中对应元素的位置。

例如:

val = 10:10:50;
subs=[1,3;3,1;2,2;3,2;2,1];
a=accumarray(subs,val)

运行结果如下所示:

a =

     0     0    10
    50    30     0
    20    40     0

当subs中如果两行元素相同的时候,那么对应的val就会累计起来。例如:

val = 10:10:50;
subs=[1,3;3,1;2,2;3,2;3,1];
a=accumarray(subs,val)

运行结果如下所示:

a =

     0     0    10
     0    30     0
    70    40     0

(2)accumarray(subs,val,sz):subs和val同(1)相同,而sz表示的是输出数组的大小。其中,ALL(MAX(subs)<=sz),例如:

val=10:10:50;
subs=[1;2;5;3;4];
sz=[6 1]
a=accumarray(subs,val,sz)

运行结果如下所示:

a =
    10
    20
    40
    50
    30
     0

由运行结果可以看出,返回的结果为6行1列的矩阵,其中大于原来行数的内容会用0来补充。

(3)accumarray(subs,val,sz,fun):subs和val同(1)相同,sz表示的输出数组的大小,其中,其中ALL(MAX(subs)<=sz),fun表示的是函数,默认情况下为[],例如;

val = 1:5;
subs = [1,1;2,1;2,2;1,2;2,1];
a = accumarray(subs,val,[],@(x) {x})

运行结果如下所示:文章来源地址https://www.toymoban.com/news/detail-800141.html

a =

  2×2 cell 数组

    {[       1]}    {[4]}
    {2×1 double}    {[3]

到了这里,关于利用MATLAB构建特殊通用矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB 创建特殊矩阵

    在MATLAB中,可以使用相应的内置函数来创建一些常见的特殊形式矩阵,例如零矩阵、单位矩阵、对角矩阵、上三角矩阵、下三角矩阵、魔方阵等。也可以用于生成一些具有试验功能的矩阵,例如希尔伯特矩阵、托普利兹矩阵、满足条件的均匀分布的随机矩阵、标准正态分布随

    2024年02月04日
    浏览(35)
  • 2023年数学建模:旅行商问题:数学建模与MATLAB实现

    目录 引言 问题定义 解决策略 MATLAB实现 数学建模案例

    2024年02月11日
    浏览(49)
  • 数学建模-插值算法(Matlab)

    注意:代码文件仅供参考,一定不要直接用于自己的数模论文中 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭 如何修改代码避免查重的方法:https://www.bilibili.com/video/av59423231   //清风数学建模 简单来说是根据已知点进行线性数据预测,但数据太少需要通过数学方

    2023年04月26日
    浏览(57)
  • 数学建模------MATLAB学习使用

    多项式就是使用行向量分别表示前面的系数,这个需要按照一定的顺序,而且为0的系数不能够省略,按照从高到低的顺序进行表示; 我们接下来演示一下如何求多项式的根: 我们首先来认识一下求多项式的根的函数roots 接下来我们哪一个最高次为5的多项式举例: 这个方程

    2024年03月27日
    浏览(60)
  • 数学建模实战Matlab绘图

    二维曲线、散点图 绘图命令: plot( x,y,’line specifiers’,’ PropertyName ’, PropertyValue ) 例子:绘图表示年收入与年份的关系 ‘--r*’:-- 设置线型; r: 设置颜色为红色; * 节点型号 ‘ linewidth ’:设置线宽;‘ markersize ’ :节点大小 常用命令: hold on(off):在一张图上持续绘图

    2024年01月21日
    浏览(47)
  • Matlab数学建模实验题

    (1)用起泡法对10个数由小到大排序.即将相邻两个数比较,将小的调到前头。 (2)有一个4×5矩阵,编程求出其最大值及其所处的位置. (3)编程求 (4)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第10次落地时,共经过多少米?第10次反弹有多高? (

    2024年02月11日
    浏览(54)
  • 数学建模之MATLAB使用

    我们都知道MATLAB里面存在着数值计算和符号计算,但是两者之间到底是怎样的呢? 举一个很简单的例子,我们在高等数学里面的微积分学习时经常求不定积分,也就是原函数,这个过程实际上进行的就是符号运算,我们通过对一些变量字符x等等的运算,最后得出一个表达式

    2024年04月09日
    浏览(56)
  • 数学建模——matlab基本使用

    清除工作区:clear。 清屏:clc。 圆周率表示:pi。 lnx代码化:log(x)。 e^x代码化:exp(x) x代表次数。 sin(x):sin(x);cos(x):cos(x);tan(x):tan(x)  arcsin(x):asin(x);arccos(x):acos(x);arctan(x):atan(x). .*与*的区别:.*代表进行矩阵的数值运算 *代表进行矩阵的运算。(matlab的基本操作对象是矩阵)。

    2024年02月07日
    浏览(44)
  • 数学建模-MATLAB三维作图

    导出图片用无压缩tif会更清晰 帮助文档:doc 函数名 新建实时脚本或右键文件转换为实时脚本 实时编辑器-全部运行-内嵌显示 保存为PDF

    2024年02月15日
    浏览(45)
  • 【数学建模】《实战数学建模:例题与讲解》第六讲-假设检验(含Matlab代码)

    如果这篇文章对你有帮助,欢迎点赞与收藏~ 假设检验是一种统计决策过程,用于判断样本数据是否支持某个特定的假设。主要有两类假设: 零假设(Null Hypothesis):通常表示为没有效应或差异的假设。 备择假设(Alternative Hypothesis):表示有效应或差异的假设。 假设检验的

    2024年02月03日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包