Matlab快速入门之矩阵和幻方矩阵

文章目录(展开/隐藏→)

展开
4.3
(3)

今天来说下Matlab中矩阵和幻方矩阵的创建方法。矩阵是指一个nm列的一些数字组成的矩形阵列,而幻方矩阵(也有人称作魔方矩阵)指的是是有相同的行数和列数,并在每行每列、对角线上的和都相等的矩阵。本文分为以下五个方面列出关于矩阵和幻方矩阵的使用:关于矩阵、输入矩阵、矩阵求和转置和对角矩阵、magic矩阵、生成矩阵。

Matlab快速入门之矩阵和幻方矩阵

关于矩阵

在MATLAB®环境中,矩阵是由很多数字组成的nm列矩形数组。特殊情况下,1×1矩阵(即标量)和只包含一行或一列的矩阵(即向量)会附加特殊含义。MATLAB采用其他方法来存储数值数据和非数值数据,但刚开始时,通常最好将一切内容都视为矩阵。

MATLAB旨在尽可能简化运算。其他编程语言一次只能处理一个数字,而MATLAB允许您轻松快捷地处理整个矩阵。所以,在Matlab中,我们可以用矩阵作运算时,往往不使用循环来运算。

本手册中使用的有效示例矩阵摘自德国艺术家和业余数学家Albrecht Dürer在文艺复兴时期的雕刻 Melencolia I。如下图所示:

Matlab快速入门之矩阵和幻方矩阵

这幅图布满了数学符号,通过仔细观察,您会发现右上角有一个矩阵。此矩阵称为幻方矩阵,在Dürer所处的时代,此幻方矩阵被视为富有真正的神秘性质。它具有某些值得让人深究的迷人特征。

Matlab快速入门之矩阵和幻方矩阵

输入矩阵

开始学习MATLAB的最佳方法是了解如何处理矩阵。启动MATLAB并按照每个示例操作。

您可以采用多种不同方法在MATLAB中输入矩阵:

  • 依次输入每个矩阵元素。
  • 从外部数据文件加载矩阵。
  • 使用Matlab内置函数生成矩阵。
  • 使用自创的函数创建矩阵,并将其保存在文件中。

首先,以元素列表的形式输入丢勒的矩阵。您只需遵循一些基本约定:

  • 使用空格或逗号分隔行的元素。
  • 使用分号;表示每行末尾。
  • 使用方括号[ ]将整个元素列表括起来。

要输入丢勒矩阵,只需在命令行窗口中键入即可

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

A =

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

此矩阵与雕刻中的数字一致。输入矩阵之后,MATLAB工作区会自动记住此矩阵。您可以将其简称为A。现在,您已经在工作区中看到A的值了,让我们看看它为什么如此有趣吧。它有什么神奇的地方呢?

矩阵求和、转置和对角矩阵

您可能已经注意到,幻方矩阵的特殊属性与元素的不同求和方法相关。如果沿任何行或列求和,或者沿两条主对角线中的任意一条求和,您将始终得到相同数字。让我们使用 MATLAB 来验证这一点。尝试的第一个语句是

>> sum(A)

ans =

    34    34    34    34

如果未指定输出变量,MATLAB 将使用变量ansanswer的缩略形式)来存储计算结果。您已经计算包含A的列总和的行向量。每个列的总和都相同,即幻数和34。

行总和如何处理?MATLAB 会优先处理矩阵的列,因此获取行总和的一种方法是转置矩阵,计算转置的列总和,然后转置结果。

MATLAB 具有两个转置运算符。撇号运算符(例如,A')执行复共轭转置。它会围绕主对角线翻转矩阵,并且还会更改矩阵的任何复数元素的虚部符号。点撇号运算符 (A.') 转置矩阵,但不会影响复数元素的符号。对于包含所有实数元素的矩阵,这两个运算符返回相同结果。

因此我们可以确认下A‘的输出:

>> A'

ans =

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

>> sum(A')'

ans =

    34
    34
    34
    34

有关避免双重转置的其他方法,请在sum函数中使用维度参数:sum(A,1)表示按列求和,sum(A,2)表示按行求和。一般情况下,我们更愿意使用这种方法分别求和。

>> sum(A,2)

ans =

    34
    34
    34
    34

使用sumdiag函数可以获取主对角线上的元素的总和:

>> diag(A)

ans =

    16
    10
     7
     1

>> sum(diag(A))

ans =

    34

其中,diag函数可以列出矩阵的对角线元素;而sum(diag(A))即为求对角线元素和。

从数学上讲,另一条对角线(即所谓的反对角线)并不是十分重要,因此MATLAB没有对此提供现成的函数。但原本用于图形的函数fliplr可以从左往右地翻转矩阵:

>> sum(diag(fliplr(A)))

ans =

    34

您已经验证丢勒雕刻中的矩阵确实是一个幻方矩阵,同时在验证过程中,您已经尝试了几个MATLAB矩阵运算。下面各部分继续使用此矩阵来演示MATLAB的其他功能。

magic 函数

MATLAB实际包含一个内置函数,该函数可创建几乎任意大小的幻方矩阵。此函数命名为magic也就不足为奇了:

>> B = magic(4)

B =

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

此矩阵几乎与丢勒雕刻中的矩阵相同,并且具有所有相同的“神奇”性质;唯一区别在于交换了中间两列。

您可以交换B的中间两列,使其看起来像丢勒A。针对B中的每一行,按照指定顺序(1、3、2、4)对列进行重新排列:这个更换矩阵行号或者列号的方法也很重要

>> A = B(:,[1 3 2 4])

A =

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

生成矩阵

MATLAB软件提供了四个用于生成基本矩阵的函数:

zeros全部为零
ones全部为 1
rand均匀分布的随机元素
randn正态分布的随机元素

下面给出了一些示例:

>> Z = zeros(2,4)

Z =

     0     0     0     0
     0     0     0     0

>> F = 5*ones(3,3)

F =

     5     5     5
     5     5     5
     5     5     5

>> N = fix(10*rand(1,10))

N =

     8     9     1     9     6     0     2     5     9     9

>> R = randn(4,4)

R =

   -1.3499    0.7147    1.4090    0.7172
    3.0349   -0.2050    1.4172    1.6302
    0.7254   -0.1241    0.6715    0.4889
   -0.0631    1.4897   -1.2075    1.0347
Matlab快速入门之矩阵和幻方矩阵

共计3人评分,平均4.3

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/program/matlab/matrices-magic-squares.html

(0)
上一篇 2022年09月12日 20:32
下一篇 2022年09月14日 21:49

相关推荐

  • Matlab二维填充等高线图函数contourf

    文章目录(展开/隐藏→) 展开常见用法语法说明peaks 函数的等高线十个层级的等高线具有标签的特定层级的等高线一个层级的等高线虚线等高线自定义线宽不连续曲面上的等高线 4.3 (…

    2021年01月12日
    060
  • Matlab图像灰度转换函数rgb2gray

    4 (2) 今天,我们来讲解Matlab中把彩色图片转换为黑白图片的函数rgb2gray,即图像灰度转换函数rgb2gray。这也是图像处理中比较重要的一环,因此也要讲解其用法。其…

    2020年09月17日
    052
  • Matlab快速入门之命令输入方式

    文章目录(展开/隐藏→) 展开format 函数隐藏输出输入长语句命令行编辑 4.3 (4) 本来来讲解下Matlab中输入命令的方式,主要包括format函数控制数字的显示方式、…

    2022年09月15日
    020
  • Matlab三维绘图函数plot3用法

    文章目录(展开/隐藏→) 展开常见语法语法说明三维螺旋图绘制多个线条绘制使用矩阵绘制多个线条指定等间距刻度单位和轴标签将点绘制为不带线的标记自定义颜色和标记指定线型在绘图后修改线条…

    2020年10月18日
    0334
  • Matlab快速入门之索引位置

    文章目录(展开/隐藏→) 展开下标冒号运算符串联删除行和列标量扩展逻辑下标find 函数 4 (1) Matlab中,有一个词,称之为索引。我们可以理解为索引表示某元素在数组或矩阵…

    2022年09月16日
    051
  • Matlab曲面图及其等高线图绘制函数surfc

    文章目录(展开/隐藏→) 展开常见用法语法说明显示曲面图下的等高线图指定曲面和等高线图的颜色图颜色修改曲面图和等高线图的外观 4.3 (3) 今天,来说下Matlab中如何使用su…

    2021年02月02日
    072

发表回复

登录后才能评论
本站APP