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

news2024/11/25 21:15:50
        你可以选择和使用一个 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.coloradmin.cn/o/525642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov5 实例分割 jason标注格式转换 训练自己的数据集

目录 一、coco128-seg数据集分析 1、配置文件 coco128-seg.yaml 2、coco128-seg数据集 二、自己用anylabeling标注获得的json文件 三、json文件转coco128-seg格式 四、实例分割训练 1、修改数据配置文件 coco128-seg.yaml 2、训练 一、coco128-seg数据集分析 这个博客中有…

5。STM32裸机开发(3)

嵌入式软件开发学习过程记录,本部分结合本人的学习经验撰写,系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维,为RTOS做铺垫(本部分基于库函数版实现),如有不足之处,敬请批评指正。 &…

【探索SpringCloud】服务发现

前言 今天,我们来聊聊SpringCloud服务发现。主要有如下几个议题: 一、服务发现的概念与方案;二、SpringCloud是如何与各个服务注册厂商进行集成的。 服务发现 在微服务架构中,我们不可避免的需要通过服务间的调用来完成系统功能…

Fourier分析入门——第1章——数学预备知识

第 1 章 学习Fourier分析的数学预备知识 目录 第 1 章 学习Fourier分析的数学预备知识 1.1 引言 1.2 几何和代数的一些相关概念的回顾 1.2.1 标量运算(scalar arithmetic) 1.2.2 向量运算(vector arithmetic) 1.2.3 向量乘法(vector multiplication) 1.2.4 向量长度 …

设计模式(java)-观察者模式

1. 简介 观察者模式,行为型设计模式。观察者模式在实际项目实践中,是一种使用较频繁的设计模式,它主要解决的是信息同步的问题,当多个对象需要从同一个主题中得到自身所需要的信息或状态,并通过这些信息或状态做出相应…

以太网外设ETH

1. 概述 近几年,项目需要,在多款单片机上使用了以太网外设。 本文为阶段知识整理,查缺补漏,方便以后再次遇到相关任务时,可以游刃有余的完成工作。 1.1 修改时间 2023年5月6日创建本文。包含STM32的ETH外设。2023年…

利用CNN对车牌进行智能识别(python代码,解压缩后直接运行)

1.代码流程 该段代码主要利用卷积神经网络(CNN)来识别车牌。下面是代码的主要流程: 导入所需的库和模块,包括matplotlib、numpy、cv2、tensorflow等。 加载用于检测车牌的级联分类器(cascade classifier)…

可见光遥感目标检测(一)任务概要介绍

前言 本篇开始对遥感图像的目标检测进行介绍,介绍了其目标前景、数据集以及评价指标。 本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。 Transformer、目标检测、语义分割交流群 欢迎关注公众号CV技…

机器学习13(正则化)

文章目录 简介正则化经验风险和结构风险过拟合正则化建模策略 逻辑回归逻辑回归评估器 练习评估器训练与过拟合实验评估器的手动调参 简介 这一节详细探讨关于正则化的相关内容,并就 sklearn 中逻辑回归(评估器)的参数进行详细解释由于 skle…

javaweb项目实战之myBlog

项目简介 技术栈: Java Mysql Html Ajax Css JS Json 项目说明 :项目使用maven创建,使用MVC架构模式 表示层:通俗讲就是展现给用户的界面和控制器层Servlet,接受请求、封装数据、调用业务 逻辑层,响…

libevent高并发网络编程 - 05_libevent实现http客户端

文章目录 1 http客户端相关的APIevhttp_uri_parse()evhttp_uri_get_scheme()evhttp_uri_get_port()evhttp_uri_get_host()evhttp_uri_get_path()evhttp_uri_get_query()evhttp_connection_base_bufferevent_new()evhttp_request_new()evhttp_make_request()evhttp_request_get_…

刷题刷题,开心

一先来每日一题 在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1: 输入&…

基于html+css图展示59

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Prompt learning 教学[最终篇]:Chatgpt使用场景推荐、优秀学习资料推荐、AI工具推荐

Prompt learning 教学[最终篇]:Chatgpt使用场景推荐、优秀学习资料推荐、AI工具推荐 1.chatgpt使用场景推荐 各位应该在各种平台看到不少可以尝试使用的场景,我这里仅收录: 有意思的场景:一般比较垂直或者小众,或者出…

CobaltStrike项目实战

环境介绍 模拟内网有三台机器:WEB、PC和DC。 WEB服务器有两个网络适配器,适配器1处于NAT模式用于连接外网,适配器2用于内网。 PC和WEB服务器一样,有两个适配器,能够同时访问外网和内网;DC作为域控制器&…

神经网络的训练过程、常见的训练算法、如何避免过拟合

神经网络的训练是深度学习中的核心问题之一。神经网络的训练过程是指通过输入训练数据,不断调整神经网络的参数,使其输出结果更加接近于实际值的过程。本文将介绍神经网络的训练过程、常见的训练算法以及如何避免过拟合等问题。 神经网络的训练过程 神…

henan Problem E. 矩阵游戏

hunan Problem E. 矩阵游戏 Attachments - 2023 CCPC Henan Provincial Collegiate Programming Contest - Codeforces 思路: 我们考虑用dp,定义f[i][j][k],代表从1,1走到i,j并且使用k次变换操作能够获得的最大 价值,那么类似于01背包,接下…

分布式数据库集成解决方案2

分布式数据库集成解决方案2 扩展阅读内部结构1.表空间(TABLESPACE) # 摘要 : 本文讨论了某公司发货系统的分布式数据库集成解决方案。该公司由于业务的发展,要在另三个城市设立货仓进行发货。为此,需要增加原先的MIS系统实现这一功…

javaweb系列-js函数、数组、字符串

1.4 函数 JavaScript中的函数被设计为执行特定任务的代码块&#xff0c;通过关键字function来定义。JavaScript中定义函数有2种语法。 第一种方法&#xff1a; <script>//定义function add(a,b){return a b;}//调用var a add(1,2);alert(a); </script> 第二种方…

【LeetCode】204.计数质数

204.计数质数&#xff08;中等&#xff09; 思路 埃拉托斯特斯筛法&#xff08;简称埃氏筛法&#xff09;&#xff0c;适用于「判断一个整数是否是质数」&#xff0c;该方法可以在判断一个整数 n 时&#xff0c;同时判断所有小于 n 的整数。 从 1 到 n 进行遍历&#xff0c;假…