第3章 3.2 MATLAB中的向量(MATLAB入门课程)

这篇具有很好参考价值的文章主要介绍了第3章 3.2 MATLAB中的向量(MATLAB入门课程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili

3.2 MATLAB中的向量

上一节我们知道,向量可以视为矩阵的一个特例:若一个矩阵的行数为1,则它可以视为一个行向量;若列数为1,则可以视为列向量;如果行数和列数同时为1,那么它就是一个标量(又称为常量、常数)。

学过其他编程语言的同学应该听过数组这个概念,在程序设计中,为了处理方便,我们需要把具有相同类型的若干元素按有序的形式组织起来,这些有序排列的同类型数据元素的集合就被称为数组。

在MATLAB的官方文档中,有时候也会出现数组这个概念。在MATLAB里,向量可以被称为一维数组,而我们常见到的由多行多列构成的矩阵可以被称为二维数组,这两个维度由矩阵的行和列表示。在MATLAB中,一维数组可以视为二维数组的一个特例。另外,在MATLAB中,我们还可以定义多维数组,多维数组是指具有两个以上维度的数组,绝大多数情况下我们不会用到,有兴趣的同学可以查看官方帮助文档。

以后在不引起误会的情况下,我们将MATLAB中的矩阵和数组视为同一个概念。

3.2.1 向量的创建方法

在MATLAB中,向量的创建方法主要有三种,分别是:直接输入法、冒号法和利用MATLAB的函数创建。大家可以打开本节的配套代码:“code_3_2_1”进行学习,下面我们来进行介绍:

(1)直接输入法

向量元素需要用英文的中括号“[ ]”括起来,元素之间用空格、逗号、分号或按回车键分隔,就可以创建对应的向量。若元素之间用空格、逗号分隔,则创建的是行向量;若用分号、回车键分隔,则创建的是列向量。(注意:这里的逗号和分号都是英文输入法下输入的,不能用中文的逗号或分号)

举例:a = [1 3 5]和a = [1,3,5]都可以创建包含元素1,3,5的行向量,并将这个行向量的值赋值给a;而b = [1;3;5]创建的是包含元素1,3,5的列向量。

(2)冒号法:最常用

我们可以利用命令:A:step:B 来创建一个行向量。(冒号也要是英文的!)

其中,A是起始值,step是每次递增或递减的步长,B是终止值(不一定刚好停在这里)。若step等于1,则可以直接简写成A:B

直接看上面的概念不够直观,下面我们举几个例子,大家根据例子来理解会很轻松。

matlab向量,MATLAB教程新手入门篇(数学建模清风主讲),matlab,数学建模,开发语言

大家根据上面的例子应该很容易发现规律。下面再给大家补充两个知识点:

第一:上表中,有三种情况都会导致MATLAB返回空的向量:空的1×0 double行向量。怎么理解这个返回结果呢?这个“1×0”指的是向量的维度,你可以理解为1行0列,即这个向量是空的,不存在元素。MATLAB中,我们可以直接使用命令[ ]创建空的向量。

第二:MATLAB返回空的向量时,出现了一个英文单词:double。这里的double表示双精度浮点型,我在这门课中并没有特意去介绍数值的类型,原因是这一块的知识比较底层,涉及到数值在计算机中的存储方式。同时,和C、C++、JAVA等语言相比,MATLAB是偏应用的一门语言,其对数值类型的要求较弱。对数值类型感兴趣的同学可以先在b站学习C语言的公开课,然后再从MATLAB官网搜索数值类型的帮助文档进行学习。

(3)利用MATLAB函数创建

我们主要介绍两个函数: linspacelogspace,它们分别用来创建等差数列和等比数列。

首先介绍linspace函数,它有两种用法,区别在于是否给定第三个输入参数n,如果我们不指定n,则MATLAB会默认n=100。这个函数使用的频率也很高,大家需要掌握。

  •  linspace(a,b): 该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为100个元素的线性间隔的向量。

  •  linspace (a,b,n): 该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为n个元素的线性间隔的向量。

matlab向量,MATLAB教程新手入门篇(数学建模清风主讲),matlab,数学建模,开发语言

初学者可能搞不懂linspace (a,b,n)和冒号法a:step:b生成向量的区别,我这里为大家总结:

(1)    linspace不需要指定步长,MATLAB会根据你给定的元素个数n自动计算出来;而使用冒号法可以自己指定步长。

(2)    linspace生成的向量的最后一个元素一定是b,而使用冒号法a:step:b生成的向量的最后元素不一定是b。

(3)    后续章节讲解循环语句时,冒号法使用的频率最高;而在绘制函数图形时,使用linspace得到的x轴的范围要比冒号法稍微准确一点。例如:我们要绘制sin(x)在区间[0, 2π]上的图形,x的范围是0到2π,我们使用linspace(0,2*pi)生成的向量的最后一个元素一定是2π;如果使用冒号法令x=0:0.1:2*pi,那么x向量的最后一个元素和2π有一个微小的差异,当然,如果我们将step取得更小,例如取成0.01,那么这个差异几乎可以忽略。

另一个函数是logspace函数,它使用的频率不高,大家了解即可。它有两种常见的用法:

  • logspace(a,b):创建一个行向量,其第一个元素为,最后一个元素为,形成总数为50个元素的等比数列向量。 

  • logspace(a,b,n): 创建一个行向量,其第一个元素为,最后一个元素为,形成总数为n个元素的等比数列向量。

下面我们来看几个例子:

matlab向量,MATLAB教程新手入门篇(数学建模清风主讲),matlab,数学建模,开发语言

大家可以思考:如何创建一个包含n个元素的等比数列,其第一项为a,最后一项为b。(这里n、a和b都是正数)?这个问题留作本章的课后习题。

3.2.2 向量元素的引用

对向量元素的引用(即提取向量指定位置的值)有两种情形,分别是提取向量中的单个元素和提取向量中的多个元素。在正式讲解之前,我们先来介绍索引(或下标)的概念。

我们知道,向量分为行向量和列向量,它们在MATLAB中只有一个维度,因此我们可以利用向量中包含的元素个数来描述一个向量的大小。MATLAB中,可以使用length函数或numel函数来计算向量中包含的元素个数。

例如:a = [1,3,8,9,7]; length(a)或numel(a)的返回结果是5,因为向量a中有五个元素。

假如我们有一个行向量a,里面包含了n个元素(n是大于等于1的常数),它们分别是  ,那么我们可以列一个表格:

matlab向量,MATLAB教程新手入门篇(数学建模清风主讲),matlab,数学建模,开发语言

从上表可以看出,索引就是指某一个元素在向量中对应的位置,也可以称为元素在向量中所处的下标,在MATLAB中,向量的索引是从1开始的。

举个具体的例子,假设向量a=[2 4 8 16 32 64 128 256 512 1024],那么a中有10个元素,因此a的最大索引是10。

(1)单个元素引用

我们提取向量a中单个元素的方法很简单,只需要利用a(ind)命令,小括号中的ind就是你要提取的对应元素的索引。(注意:创建向量用中括号,提取元素要用小括号哦!)

例如:a(1)的结果为2,因为a中第1个位置(索引或下标等于1)的元素是2;类似的,a(9)等于512,因为a中第9个位置的元素是512。

有些同学可能会好奇,如果我取索引为11,即输入a(11)会出现什么情况?

MATLAB会报错:“索引超出数组元素的数目(10)”,即告诉我们,现在这个向量中元素的数目只有10个,即最大索引是10,而你取了索引11的元素,超出了取值范围。

另外,如果我们将ind取成0、负数或者小数,例如输入a(0)、a(-1)、a(1.5),MATLAB也会报错:“数组索引必须为正整数或逻辑值”。这里出现了“逻辑值”的概念,我们在本章后面小节中会介绍。

(2)多个元素引用

类似的,我们也可以利用向量的索引来同时提取多个位置的元素,这时候只需要将ind设置成一个向量,ind中放入我们想要提取的元素的索引,然后使用a(ind)命令即可。

例如,我们令ind = [1 3 5 7 9],那么a(ind)的结果为[2 8 32 128 512],即我们提取了向量a中奇数位置的元素。熟悉向量冒号创建方法的同学应该能够看出,ind等于1:2:9,因此我们可以直接将a(ind)写成a(1:2:9),这就表示提取a中奇数位置的元素;类似的,提取a中偶数位置元素的命令是a(2:2:10),如果你不熟练的话,可以分成两步写,即先令ind=2:2:10,然后再使用a(ind)的命令。当然,对于同一个位置的元素,我们也可以提取多次,例如:ind = [1 2 2 3 3 3],那么a(ind)得到的结果应该是[2 4 4 8 8 8],以后熟悉的话可以直接写成a([1 2 2 3 3 3])。

技巧:使用end索引

有同学会想,假如我不知道向量a中有多少个元素,也不想使用length函数或者numel函数来计算向量中元素的个数,那我能不能提取出a中奇数位置的元素呢?这时候就需要用到一个特殊的关键字:end。它有很多种用法,在这里end可以用来替代向量的最后一个索引

例如,我现在要访问a中第五个至最后一个元素,那么我们可以直接使用a(5:end),这里的end就表示了a的最后一个索引;另外,我们还可以对end进行计算,例如要访问a中第五个至倒数第三个元素,我们可以使用a(5:end-2),得到的结果为[32 64 128 256]。

这里有一个易错点,如果使用了end,不能将要取元素的索引赋值给ind。例如,还是要访问a中第五个至最后一个元素,如果你令ind=5:end,MATLAB就会报错。因此,我们只能在a后面的小括号中使用end来替代数组的最后一个索引。

那我们回到上面的问题,在不知道a中有多少个元素的前提下,我们可以使用a(1:2:end)。    

最后请大家思考:如何将一个向量倒序?例如原来的向量是[1 5 8 4],倒序后是[4 8 5 1]。这个问题留作本章课后习题。

3.2.3 向量元素的修改和删除

前面我们介绍了向量元素的引用,我们可以利用等号赋值的方法对引用位置的元素进行修改和删除。令向量a=[2 4 8 16 32 64 128 256 512 1024],请大家依次执行下面的代码:

matlab向量,MATLAB教程新手入门篇(数学建模清风主讲),matlab,数学建模,开发语言

如果我们将等号右侧变成空向量[ ],则表示删除对应位置的元素。

matlab向量,MATLAB教程新手入门篇(数学建模清风主讲),matlab,数学建模,开发语言

点击下方的CSDN专栏阅读下一篇文章:

MATLAB入门课程专栏文章来源地址https://www.toymoban.com/news/detail-861890.html

到了这里,关于第3章 3.2 MATLAB中的向量(MATLAB入门课程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 新手入门matlab之线性系统的时域分析

    ##  matlab是一个基于矩阵运算的数学软件,又称矩阵实验室,所以里面的所有东西都是以矩阵的形式来进行运算的  ## ##   首先我们先介绍一下构建传递函数的基本格式,以及一些函数的用法 ## 一.首先打开matlab,直接在命令行窗口新建对应闭环传递函数的矩阵    ***上面是

    2024年02月06日
    浏览(15)
  • 【Matlab数理统计知识点合集】新手入门第十三天

    掌握随机数的产生 了解概率密度函数等函数的使用 掌握统计图表的绘制方法 随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模

    2023年04月11日
    浏览(12)
  • MATLAB入门教程(6):修改矩阵中的值

      代码粘贴后并不好看,故使用图片粘贴如下。 代码部分是我在MATLAB里面加的注释版本(使用版本为MATLAB R2022a)   上一讲中提到了如何使用索引,那我们很简单的思路就是对索引值赋值即可 我们先生成矩阵A 接着我们用单向量索引A(15) 即是修改第十五个元素的值(从左到右

    2024年01月20日
    浏览(14)
  • 【Matlab入门】 第二章 向量和矩阵

    警告!警告!你现在所查看的这一章,是matlab最核心、最重要的功能区块。务必将向量组、数组(我学了C,还是这样叫比较顺口)、矩阵及其运算学明白。在学习本章之前,请观看者有线性代数入门知识,至少要学到特征值部分,不然理解会十分困难。倘若你准备好的话,进入

    2024年02月21日
    浏览(13)
  • Matlab | 找出数组/向量中的重复项的索引

    输入一个数组,里面含有重复项,想要将其重复的项的序号指示出来。 unique()函数可以去除数组的重复项,并且返回索引。我们可以利用这个返回的索引,进而找出原数组中重复出现的位置。 贴了两份代码,第一份输出形式数组,第二份输出形式是元胞。

    2024年02月11日
    浏览(21)
  • 第5章:5.2 字符数组(MATLAB入门课程)

    讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。 MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 上一小节提过:字符(char)是文本的最基本单元。 在 MATLAB 中,单个字符使用单引号引起来,例如: \\\'a\\\' 、 \\\'0\\\' 、

    2024年01月15日
    浏览(12)
  • 第5章附录4:本章函数速查表(MATLAB入门课程)

    ​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 本章知识点非常多,也介绍了非常多的内置函数。下面根据函数的功能提供了几张速查表,这能帮助大家快

    2024年02月03日
    浏览(9)
  • 第5章:5.4.1 字符串数组的创建方法(MATLAB入门课程)

    讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 在本章5.2和5.3两个小节中,我们详细介绍了字符数组和元胞数组在文本数据处理中的应用。本节我们将重点学

    2024年02月01日
    浏览(20)
  • 第5章:5.4.4 字符串数组的配套函数 (MATLAB入门课程)

    ​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili MATLAB自2016b版本正式引入字符串类型起,其文本处理能力就得到了进一步提升。为了增强字符串数组的操控性

    2024年02月02日
    浏览(13)
  • 第5章:5.4.5 字符串数组的综合练习(MATLAB入门课程)

    ​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 案例 1 : 下表左侧给出了四名同学在三次测试中的成绩数据,请对所有同学的测试成绩进行排名,并生成一

    2024年01月24日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包