(转载)从0开始学matlab(第4天)—子数组

news/2024/11/15 0:58:49/
        你可以选择和使用一个 MATLAB 函数的子集,好像他们是独立的数组一样。在数组名后面加括号,括号里面是所有要选择的元素的下标,这样就能选择这个函数的子集了。例如,假设定义了一个数组 arr1 如下
arr1=[1.1 -2.2 3.3 -4.4 5.5]
        那么 arr1(3) 3.3,arr1([1 4]) 为数组 [1.1 -4.4],arr1(1:2:5) 为数组[1.1 3.3 5.5]. 对于一个二维数组,克隆运算符可以用于下标来选择子数组。例如,假设
arr2=[1 2 3; -2 -3 -4;3 4 5]
        将建立一个数组

在这种定义下,子数组 arr2(1,:)[1 2 3],子数组 arr2(:,1:2:3)

1 end 函数

        MATLAB中有一个特殊的函数叫做 end 函数 , 对于创建子数组的下标非常的有用 .当用到一个函数的下标时 ,end 函数将会返回下标的最大值. 例如 , 假设数组 arr3 定义如下 :
arr3=[1 2 3 4 5 6 7 8];
        那么 arr3(5:end) 将会产生数组 [5 6 7 8],arr3(end) 将会产生值 8. end 函数返回的值一般为所要下标的最大值 . 如果 end 函数显示有不同的下标 ,那它将在一个表达式内返回不同的值 . 例如 , 假设一个 3 × 4 数组 arr4 的定义如下 :
arr4=[1 2 3 4;5 6 7 8;9 10 11 12]

        那么表达式arr4(2:end,2:end)将会返回

        注意第一个end 返回值为 3,第二个返回值为 4.

2 子数组在左边的赋值语句的使用

        只要数组的形(行数和列数)和子数组的形相匹配,把子数组放于赋值语句的左边用来更新数组中的值。如果形不匹配,那么将会有错误产生。例如,下面有一个 3 × 4 数组定义如下:
>> arr4=[1 2 3 4;5 6 7 8;9 10 11 12] 
arr4 = 1 2 3 4 5 6 7 8 9 10 11 12
        因为在等号左边的表达式的形(2 × 2 )与 a 相匹配,那么下面的这个赋值语句是合法的。
>> arr4(1:2,[1 4])=[20 21;22 23] 
arr4 = 20 2 3 21 22 6 7 23 9 10 11 12
        注意数组元素(1 1 ),( 1 4)(2 1)和(2 4)得到了更新。相对而言,两边的形不相匹配,则表达式是非法的,例如下面这个表达式。
>> arr5(1:2,[1 4])=[20 21] 
??? Subscripted assignment dimension mismatch.
常见编程错误
对于涉及子数组的赋值语句,等号两边的形必须相匹配。否则将会产生错误。
        在 MATLAB 中用子数组赋值和用值直接赋值有很大的不同。如果用子数组赋值,那么只有相应的值得到更新,而其他的值保持不变。另一方面,直接赋值,则数组的原有内容全部删除并被新的值替代。例如,假设用一个数组 arr4 定义如下:
>> arr4=[1 2 3 4;5 6 7 8;9 10 11 12] 
arr4 = 1 2 3 4 5 6 7 8 9 10 11 12
        下面的赋值语句,只更新特定的元素:
>> arr4(1:2,[1 4])=[20 21;22 23] 
arr4 = 20 2 3 21 22 6 7 23 9 10 11 12
        相对地,下面的赋值语句更新了数组的全部内容,并改变了数组的形
>> arr4=[20 21;22 23] 
arr4 = 20 21 22 23
好的编程习惯
确保将赋值于子数组和赋值于数组。 MATLAB 将它们当作两个不同的情况来对待。

3 用一标量来给子数组赋值

        位于赋值语句的右边的标量值总是能匹配左边数组的形。这个标量值将会被复制到左边语句中所对应的元素。例如,假设用一个数组 arr4 定义如下:
arr4=[1 2 3 4;5 6 7 8;9 10 11 12]
        下面的表达式将一个值赋值于数组的 4 个元素。
>> arr4(1:2,1:2)=1 
arr4 = 1 1 3 4 1 1 7 8 9 10 11 12


http://www.ppmy.cn/news/595603.html

相关文章

【云原生丶Docker】Docker镜像加速器:给冰山提提速!

Docker镜像加速器是一种用于加速Docker镜像下载和构建的工具。它可以提高Docker镜像的下载速度,从而加快应用程序的开发和部署速度。 Docker镜像加速器通常使用CDN(内容分发网络)技术来实现加速。CDN是一种分布式网络架构,可以将内容缓存在全球各地的服务…

毕业设计之图书馆座位预约系统

1.系统开发环境 系统采用的集成开发环境为IDEA,使用JAVA语言及SPRINGBOOT框架进行开发,其中硬件环境和软件环境如下: 2.硬件环境 处理器:Intel(R) Core(TM) i7-9750 GPU 3.00GHz 内存:8GB 3.软件环境 操作系统&…

xss-labs靶场level1~5

参考资料: XSS常见的触发标签_可以触发xss的标签_H3rmesk1t的博客-CSDN博客 基础知识: XSS漏洞的定义: 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩…

Java的三种循环

1. switch语句 1.1 switch语句结构(掌握) 1. 格式: switch (表达式) {case 1:语句体1;break;case 2:语句体2;break;...default:语句体n1;break; } 复制 2. 执行流程: 首先计算出表达式的值其次,和case依次比较&a…

《俄罗斯方块游戏制作》---1.俄罗斯方块的创作与输出

从今天开始,我会不断发布这个专辑的内容,预计分十次完成。 今天我们先来完成第一步:俄罗斯方块的创作与输出 1:方块样式 int block_1[4][4]{{0,1,1,1},{0,0,1,0},{0,0,0,0},{0,0,0,0}}; int block_2[4][4]{{0,1,1,0},{0,1,1,0},{0,0,0,0},{0,…

Centos7下tensorflow 2.12无法找到NVIDIA Tesla T4 GPU终极解决方法

目录 背景 系统信息 GPU信息 关键软件信息 问题现象 原因分析

俄罗斯方块、纯前端实现俄罗斯方块、俄罗斯方块代码

俄罗斯方块、纯前端实现俄罗斯方块、俄罗斯方块代码 今天我们要分享一款基于jQuery的俄罗斯方块游戏,这款俄罗斯方块游戏同样支持难度自动提升、累计积分等功能。 点击下载代码 推箱子代码 碰撞检测穿马路、小人过马路 魔幻粒子、火焰动画 开心消消乐 16宫格的翻牌…

经典俄罗斯方块游戏使用手册

本程序为一款经典俄罗斯方块游戏,玩家通过移动、旋转和摆放各种造型的方块,使之排列成完整的一行或多行并且消除得分;使用快速下降按钮,视高度额外加分。本游戏针对触摸屏操作进行优化,让您有酣畅淋漓的快感&#xff1…