MATLAB 向量和矩阵_matlab向量和矩阵-程序员宅基地

技术标签: matlab  矩阵  MATLAB  # MATLAB基础入门  开发语言  

作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
个人主页:小嗷犬的博客
个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
本文内容:MATLAB 向量和矩阵



输入数组

MATLAB 中的每个数值变量都是一个数组,单个称为标量的数值实际上是一个 1×1 数组,也即它包含 11 列。

我们可以用方括号[]来创建包含多个元素的数组:

>> x = [2 3 4]
x =
     2     3     4

这样我们能够得到一个包含元素234数组,也即一个包含元素234行向量

我们可以通过分号;来区分数组中的不同行:

>> x = [2 3 4;5 6 7]
x =
     2     3     4
     5     6     7

这样我们能够得到一个2×3数组,第一行包含元素234,第二行包含元素567


创建等间距向量

有的时候,我们会需要一些包含等间距数值的向量,如:

>> x = [2 3 4]
x =
     2     3     4

当需要的数值量更多时,我们需要写成这样:

>> x = [2 3 4 5 6 7 8 9 10 11 12]
x =
     2     3     4     5     6     7     8     9    10    11    12

这显然是十分不便的,MATLAB 为我们创建等间距向量提供了更简便的写法。

通过间距创建等间距向量

我们可以用冒号运算符:生成一个等间距的向量:

>> x = 2:12
x =
     2     3     4     5     6     7     8     9    10    11    12

仅指定起始值最终值来生成一个等间距的向量,同时注意,使用冒号运算符时,不需要方括号

冒号运算符:使用的默认间距为 1,我们也可以手动指定间距:

>> x = 2:2:12
x =
     2     4     6     8    10    12

这样表示以 2 为起始值,以 2 为间距,以 12 为最终值生成一个等间距的向量,等价于:

>> x = [2 4 6 8 10 12]
x =
     2     4     6     8    10    12

通过元素数目创建等间距向量

如果我们知道向量中所需的元素数目(而不是每个元素之间的间距),则可以改用 linspace 函数:

linspace(first,last,number_of_elements)

创建一个以 1 开头,以 10 结尾,共包含 5 个元素的行向量:

>> x = linspace(1,10,5)
x =
     1.0000    3.2500    5.5000    7.7500   10.0000

等间距列向量

上面的两个方法都可以创建等间距向量,但它们创建出的向量都是行向量,如何得到等间距的列向量呢?

MATLAB 为我们提供了转置运算符 ' 来将一个向量进行转置。

通过转置,我们就可以用上面的方法生成等间距的列向量了:

>> x = 2:2:12
x =
     2     4     6     8    10    12

>> x = x'
x =
     2
     4
     6
     8
    10
    12

>> y = linspace(1,10,5)
y =
     1.0000    3.2500    5.5000    7.7500   10.0000

>> y = y'
y =
     1.0000
     3.2500
     5.5000
     7.7500
    10.0000

我们也可以在创建时就进行转置,此时我们使用圆括号()来指定运算的顺序:

>> x = (2:2:12)'
x =
     2
     4
     6
     8
    10
    12

>> y = (linspace(1,10,5))'
y =
     1.0000
     3.2500
     5.5000
     7.7500
    10.0000

数组创建函数

MATLAB 包含许多函数,可帮助我们创建常用的矩阵,如 rand 函数:

>> x = rand(2)
x =
    0.1234    0.5678
    0.9012    0.3456

这里 x 将会是一个 2×2 的随机数矩阵。

rand 函数提供两个参数,来分别指定它的行数和列数:

>> x = rand(2,3)
x =
    0.1234    0.5678    0.9012
    0.3456    0.7890    0.1234

这里 x 将会是一个 2×3 的随机数矩阵。

其他的数组创建函数也具有相同的用法:

>> x = zeros(4)
x = 
    0    0    0    0
    0    0    0    0
    0    0    0    0
    0    0    0    0

>> y = ones(6, 3)
y =
    1   1   1
    1   1   1
    1   1   1
    1   1   1
    1   1   1
    1   1   1

这里的 xy 分别是一个 4×4 的全0矩阵和一个 6×3 的全1矩阵。

size 函数能够得到现有矩阵的大小:

>> x = [1 2 3;4 5 6]
x =
    1    2    3
    4    5    6

>> size(x)
ans =
    2    3

我们可以借助 size 函数来生成与现有矩阵大小相同的矩阵:

>> x = [1 2 3;4 5 6]
x =
    1    2    3
    4    5    6

>> y = rand(size(x))
y =
    0.1234    0.5678    0.9012
    0.3456    0.7890    0.1234

创建和合并数组的函数

函数 说明
zeros(m,n) 创建一个 m×n 的全0矩阵
ones(m,n) 创建一个 m×n 的全1矩阵
rand(m,n) 创建一个 m×n 的随机数矩阵
randn(m,n) 创建一个 m×n 的标准正态分布随机数矩阵
ture(m,n) 创建一个 m×n 的全true矩阵
false(m,n) 创建一个 m×n 的全false矩阵
eye(n) 创建一个 n×n 的单位矩阵
diag(v) 创建一个对角矩阵,对角线上的元素为向量 v
diag(v,k) 创建一个对角矩阵,对角线上的元素为向量 v,对角线的偏移量为 k
blkdiag(A,B,…) 创建一个由矩阵 A、B、… 组成的分块对角矩阵
linspace(a,b,n) 创建一个从 a 到 b 的等差数列,包含 n 个元素
logspace(a,b,n) 创建一个从 10^a 到 10^b 的等比数列,包含 n 个元素
cat(dim,A,B,…) 沿着维度 dim 将矩阵 A、B、… 连接起来
vertcat(A,B,…) 沿着第一维将矩阵 A、B、… 连接起来
horzcat(A,B,…) 沿着第二维将矩阵 A、B、… 连接起来
repelem(A,m,n) 创建一个 m×n 的矩阵,其中每个元素都是矩阵 A 中的元素的重复
repmat(A,m,n) 创建一个 m×n 的矩阵,其中每个元素都是矩阵 A 的重复

确定数组大小、形状和排序的函数

函数 说明
length(x) 返回向量 x 的长度
size(x) 返回矩阵 x 的大小
size(x,dim) 返回矩阵 x 在维度 dim 上的大小
ndims(x) 返回矩阵 x 的维数
numel(x) 返回矩阵 x 中元素的个数
isscalar(x) 判断 x 是否是标量
issorted(x) 判断向量 x 是否是有序的
issortedrows(x) 判断矩阵 x 的行是否是有序的
isvector(x) 判断 x 是否是向量
ismatrix(x) 判断 x 是否是矩阵
isrow(x) 判断 x 是否是行向量
iscolumn(x) 判断 x 是否是列向量
isempty(x) 判断 x 是否为空
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_63585949/article/details/127466490

智能推荐

前端开发之vue-grid-layout的使用和实例-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout

Power Apps-上传附件控件_powerapps点击按钮上传附件-程序员宅基地

文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件

C++ 面向对象(Object-Oriented)的特征 & 构造函数& 析构函数_"object(cnofd[\"ofdrender\"])十条"-程序员宅基地

文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"

修改node_modules源码,并保存,使用patch-package打补丁,git提交代码后,所有人可以用到修改后的_修改 node_modules-程序员宅基地

文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules

【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure-程序员宅基地

文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure

整理5个优秀的微信小程序开源项目_微信小程序开源模板-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板

随便推点

Centos7最简搭建NFS服务器_centos7 搭建nfs server-程序员宅基地

文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server

Springboot整合Mybatis-Plus使用总结(mybatis 坑补充)_mybaitis-plus ruledataobjectattributemapper' and '-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d

EECE 1080C / Programming for ECESummer 2022 Laboratory 4: Global Functions Practice_eece1080c-程序员宅基地

文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c

洛谷p4777 【模板】扩展中国剩余定理-程序员宅基地

文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...

android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...-程序员宅基地

文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy

SylixOS快问快答_select函数 导致堆栈溢出 sylixos-程序员宅基地

文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos

推荐文章

热门文章

相关标签