MATLAB学习之矩阵与幻方矩阵

原文见https://ww2.mathworks.cn/help/matlab/learn_matlab/matrices-and-magic-squares.html

上面为官方MATLAB原网址,写此博客为方便复习回顾

矩阵和幻方矩阵

关于矩阵

在 MATLAB® 环境中,矩阵是由数字组成的矩形数组。有时,1×1 矩阵(即标量)和只包含一行或一列的矩阵(即向量)会附加特殊含义。MATLAB 采用其他方法来存储数值数据和非数值数据,但刚开始时,通常最好将一切内容都视为矩阵。MATLAB 旨在尽可能简化运算。其他编程语言一次只能处理一个数字,而 MATLAB 允许您轻松快捷地处理整个矩阵。

输入矩阵

开始学习 MATLAB 的最佳方法是了解如何处理矩阵。
您可以采用多种不同方法在 MATLAB 中输入矩阵:

  • 输入元素的明确列表。
  • 从外部数据文件加载矩阵。
  • 使用内置函数生成矩阵。
  • 使用您自己的函数创建矩阵,并将其保存在文件中。

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

  1. 使用空格或逗号分隔行的元素。
  2. 使用分号 ; 表示每行末尾。
  3. 使用方括号 [ ] 将整个元素列表括起来。
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

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

您可能已经注意到,幻方矩阵的特殊属性与元素的不同求和方法相关。如果沿任何行或列求和,或者沿两条主对角线中的任意一条求和,您将始终得到相同数字。

sum(A)
ans =
    34    34    34    34

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

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

MATLAB 具有两个转置运算符。撇号运算符(例如,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 函数中使用维度参数:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1];
sum(A,1)%代表处理矩阵的列
sum(A,2)%代表处理矩阵的行

ans =
    34    34    34    34
ans =
    34
    34
    34
    34

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

diag(A)
ans =
    16
    10
     7
     1
sum(diag(A))
ans =
    34

可以看到幻方矩阵的行和和列和以及对角线和相等,这也是称为幻方矩阵的原因

magic 函数

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

M = magic(n) 返回由 1 到 n2 的整数构成并且总行数和总列数相等的 n×n 矩阵。n 的阶数必须是大于或等于 3 的标量才能创建有效的幻方矩阵。

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 =
     9     2     6     4     8     7     4     0     8     4
R = randn(4,4)
R =
    0.6353    0.0860   -0.3210   -1.2316
   -0.6014   -2.0046    1.2366    1.0556
    0.5512   -0.4931   -0.6313   -0.1132
   -1.0998    0.4620   -2.3252    0.3792
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值