前言:

The colon is one of the most useful operators in MATLAB®. It can create vectors, subscript arrays, and specify for iterations.

冒号在Matlab中主要应用向量和数组下标和for迭代等,在做下标表述的时候,比较晦涩难懂难懂有必要单独讨论一下:


1 表达式:

x = j:k
x = j:i:k
A(:,n)
A(m,:)
A(:)
A(j:k)

1.1 x = j:k 【默认间隔1,j为第一维度,k为第二维度】

creates a unit-spaced vector x with elements [j,j+1,j+2,...,j+m] where m = fix(k-j). If j and k are both integers, then this is simply [j,j+1,...,k].

创建一个具备j到j+m的单位间隔向量,每个元素默认增加的步长为1.

【案,默认间隔增加的步长为1,这时候】

【例1】创建一个单位间隔向量:

x = 1:10
x = 1×101     2     3     4     5     6     7     8     9    10

>> y=7:14y =7     8     9    10    11    12    13    14

1.2 x = j:i:k 创建指定间隔的向量

x = j:i:k creates a regularly-spaced vector x using i as the increment between elements. The vector elements are roughly equal to [j,j+i,j+2*i,...,j+m*i] where m = fix((k-j)/i). However, if i is not an integer, then floating point arithmetic plays a role in determining whether colon includes the endpoint k in the vector, since k might not be exactly equal to j+m*i. If you specify nonscalar arrays, then MATLAB interprets j:i:k as j(1):i(1):k(1).

创建一个普通间隔的向量,将i作为元素增加的步长。

【例2】创建一个指定间隔的向量:这个例子里面步长为0.1,这样0开始计算后,正好是有

Create vectors that increment or decrement by a specified value.

Create a vector whose elements increment by 0.1.

>> x = 0:0.1:1x =列 1 至 60    0.1000    0.2000    0.3000    0.4000    0.5000列 7 至 110.6000    0.7000    0.8000    0.9000    1.0000

有约束条件:

Output Arguments

collapse all

x — Regularly-spaced vector
row vector

Regularly-spaced vector, returned as a row vector. If j > k, then x = j:k is an empty matrix. More generally, the syntax x = j:i:k returns an empty matrix when:

  • ij, or k is an empty input

  • i == 0

  • i > 0 and j > k

  • i < 0 and j < k

1.3 A(:,n)A(m,:)A(:), and A(j:k)  common indexing expressions 数组的一般标号表达式

A(:,n)A(m,:)A(:), and A(j:k) are common indexing expressions for a matrix A that contain a colon. When you use a colon as a subscript in an indexing expression, such as A(:,n), it acts as shorthand to include all subscripts in a particular array dimension. It is also common to create a vector with a colon for the purposes of indexing, such as A(j:k). Some indexing expressions combine both uses of the colon, as in A(:,j:k).

一般标号表达式,冒号有点像通配符:

先生成一个3by3的矩阵,

A = magic(3)
A = 3×38     1     63     5     74     9     2
  • A(:,n) is the nth column of matrix A.【第n列所有元素】

A(1,:)
ans = 1×38     1     6
>> A(2,:)ans =3     5     7
  • A(m,:) is the mth row of matrix A.-【第m行的所有元素】

>> A(:,1)ans =834
>> A(:,2)ans =159
  • A(:,:,p) is the pth page of three-dimensional array A.【一个page的数据】

>>  B = randn(4,3,2)B(:,:,1) =-0.1924   -1.4224    1.41930.8886    0.4882    0.2916-0.7648   -0.1774    0.1978-1.4023   -0.1961    1.5877
  • A(:) reshapes all elements of A into a single column vector. This has no effect if A is already a column vector.【把二维数组的列合并成1列,降维了】

>> A(:)ans =834159672

注意,3维数组这个操做不行。

  • A(:,:) reshapes all elements of A into a two-dimensional matrix. This has no effect if A is already a matrix or vector. 【把刚才的一维的又搞成2维的了】

>> A(:,:)ans =8     1     63     5     74     9     2
  • A(j:k) uses the vector j:k to index into A and is therefore equivalent to the vector [A(j), A(j+1), ..., A(k)].

按照从左到右,从上到下的顺序,将A从元素j到元素k,提取出来,并合成一个向量。

>> A(2:3)ans =3     4
>> A(1:3)ans =8     3     4
  • A(:,j:k) includes all subscripts in the first dimension but uses the vector j:k to index in the second dimension. This returns a matrix with columns [A(:,j), A(:,j+1), ..., A(:,k)].

这个就组合的意思:这里坐标的参数是向量的第一维度,右边的参数是向量的第二维度:

于是如果A=

>> A(:,:)ans =8     1     63     5     74     9     2

那么, 1到2列的选择为

>> A(:,1:2)ans =8     13     54     9

1到3列的选择为:

>> A(:,1:3)ans =8     1     63     5     74     9     2

3 实例举例和分析:

构建一个4阶的幻方备用:

>> A = magic(4)A =16     2     3    135    11    10     89     7     6    124    14    15     1

再构造一个8阶的幻方备用:

>> B = magic(8)B =64     2     3    61    60     6     7    579    55    54    12    13    51    50    1617    47    46    20    21    43    42    2440    26    27    37    36    30    31    3332    34    35    29    28    38    39    2541    23    22    44    45    19    18    4849    15    14    52    53    11    10    568    58    59     5     4    62    63     1

3.1 从某个指定行按照指定的顺序摘取数据:

【例1】从幻方B,的第2,3行,从第7列到第1列,倒序或者说减序(-1)摘取数据

>> B(2:3,7:-1:1)ans =50    51    13    12    54    55     942    43    21    20    46    47    17

【案,表征如下】

【例二】幻方A,从第3到4行,2到4列,正序摘取数据,默认为1,所以,可以不写,

>> A(3:4,2:4)ans =7     6    1214    15     1

【例3】引用最后一列元素

>> A(:,end)ans =138121

【例四】引用第3行,导数第2个数据

>> B(3,end - 1)ans =42

3.2 复杂的数据重组:

继续使用,上一小结生成的幻方矩阵做例子:

例五,摘取不确定的行和列,可以重复,并把他们重新组织起来。

本例,将B的第1,3行的,第2,3列组织起来,注意,第3行,和第2列,第3列都取了2次

>> B([1 3 3],[2 2 3 3])ans =2     2     3     347    47    46    4647    47    46    46

3.3 冒号的通配符例子:

例6,我们用:做通配符,将一个3x3的矩阵拓展为 3x3x3x2的四维度的矩阵

>>  C(:,:,1,2)=[1 2 3;4 5 6;7 8 9]C(:,:,1,1) =0     0     00     0     00     0     0C(:,:,1,2) =1     2     34     5     67     8     9

【案,通配符这里占据了第1,2向量维度,我们只给出了一个3x3的矩阵,其他的矩阵自动赋值为0,这里我们定义了维度3by1&维度4by2的一个值,系统自动将3by1的赋值为0】

>> C(:,:,2,2)=[9 8 1;6 5 4;3 2 1]C(:,:,1,1) =0     0     00     0     00     0     0C(:,:,2,1) =0     0     00     0     00     0     0C(:,:,1,2) =1     2     34     5     67     8     9C(:,:,2,2) =9     8     16     5     43     2     1

【案,我们继续赋值维度3by2&维度4by2的值,系统自动赋值其他】

>> C(:,:,3,2)=[5 5 5;5 5 5;5 5 5]C(:,:,1,1) =0     0     00     0     00     0     0C(:,:,2,1) =0     0     00     0     00     0     0C(:,:,3,1) =0     0     00     0     00     0     0C(:,:,1,2) =1     2     34     5     67     8     9C(:,:,2,2) =9     8     16     5     43     2     1C(:,:,3,2) =5     5     55     5     55     5     5

【同理,构造了整个矩阵】


2 相关名称参考:

2.1 unit-spaced vector 【单位间隔向量 】

注意这个和Unit vect不太一样,是单位间隔向量。


参考:

Vector creation, array subscripting, and for-loop iteration - MATLAB colon : (mathworks.com)

matlab常用的数组操作总结_追风之人YL的博客-CSDN博客_matlab 数组

Matlab 基础04 - 冒号Colon operator “:”的使用和复杂应用详析相关推荐

  1. java 会话跟踪技术_JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解 ...

  2. JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操 ...

  3. MathWorks官方MATLAB/Simulink基础入门视频教程 笔记(matlab基础)

    最近的几篇博客主要自己在看mathworks官方的MATLAB教程做的笔记,有需要详细了解的可以去mathwork看,或者联系我,我这里有下载下来的.中文讲解. 笔记记录的笔记凌乱,只记录了部分对我有 ...

  4. MATLAB学习笔记之matlab基础知识

    MATLAB基础知识 MATLAB系统环境 MATLAB操作界面组成 MATLAB主窗口 命令行窗口 当前文件夹窗口 工作区窗口 MATLAB的搜索路径 MATLAB数值数据 数值数据类型的分类 整型 ...

  5. MATLAB学习笔记2:MATLAB基础知识(下)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  6. MATLAB 基础与通信系统仿真

    文章目录 第 1 章 MATLAB 基础与通信系统仿真 1.1 MATLAB 简介 1.1.1 MATLAB 的起源 1.1.2MATLAB 的特点 1.2 MATLAB 程序设计 1.2.1 MAT ...

  7. matlab中exp(liangx),Matlab基础知识

    <Matlab基础知识>由会员分享,可在线阅读,更多相关<Matlab基础知识(122页珍藏版)>请在人人文库网上搜索. 1.Lxy, China Jiliang Univer ...

  8. matlab基础总结与图像处理应用(上)

    Q: how to improve my coding force level A: 我会找个教程/文档例子,把代码逐行敲一遍,感觉就像是我自己写的一样,一旦完成,我会从头重写一遍,添加注释,并根据自 ...

  9. Matlab基础代码教程

    Matlab基础代码教程 第1部分:变量定义和基本运算: % 生成矩阵% 直接法a = [1,2,3;4,5,6;7,8,9];% 冒号一维矩阵 a = 开始:步长:结束,步长为1可省略b = 1:1 ...

最新文章

  1. 如何把gcc编译工具使用到linux全局
  2. Shell编程中Shift的用法
  3. 中国官方唯一无人车路测报告一出炉,百度股价又涨了
  4. 网站突然不收录?如何做到自审、自查、自纠?
  5. elasticsearch索引和映射
  6. 事务相关、不可重复读与幻读的区别
  7. 静态路由绑定探测组功能的配置
  8. Exchange 2013 启用反垃圾邮件功能
  9. macOS 10.10 u盘安装win7
  10. Java 首字母转大写,StringUtils.capitalize
  11. 菜鸟Django--更改和删除
  12. 周礼键君:中国福建省建瓯市之《闽郡八音字典》修订版
  13. Oracle物化视图与物化视图日志
  14. 小米盒子显示服务器断开,【当贝市场】小米盒子4网络掉线怎么办?解决办法...
  15. 论文推荐 | 综述:自动驾驶背景下的交通流模型研究
  16. 产品经理(PM)和产品负责人(PO)的区别
  17. 吴恩达老师DeepLearning系列课程最详细学习笔记之4—为什么深度学习会兴起?
  18. group by 使用规则
  19. 软件 著作权 代理 登记 598/件,量大从优
  20. mysql的视图的名词解释_MySql中的视图的概念及应用

热门文章

  1. 关于java中创建对象时属性的初始化过程
  2. 使用idea搭建SSM框架,并成功运行。
  3. 深入分析Java Web技术内幕(修订版) 读书笔记
  4. php中如何声明静态属性,PHP使用static关键字声明静态属性和静态方法
  5. 4G物联网模组连接网络大致流程
  6. 26.Odoo产品分析 (三) – 人力资源板块(6) – 工资表(2)
  7. 记录yarn安装全局包,无法使用的问题:‘yo‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
  8. 十秒钟入门一分钟搭建Discuz论坛
  9. 泛函分析笔记1:度量空间
  10. C++基础(持续更新)