Matlab学习笔记(三)

摘要:
根据a和b的大小,inc可以是正数,也可以是负数。

二、MATLAB基础知识

(四)数组

  • MATLAB总是把数组看作存储和运算的基本单位,标量数据也被看作是(1×1)的数组
  • 一维数组的创建
    • 创建一维数组的几种方法:(e_two_14.m
      • 直接输入法:直接通过空格、逗号和分号来分隔数组元素。
      • 步长生成方法:x=a:inc:b,a和b为一维向量数组的起始数值和终止数值,inc为数组的间隔步长;如果a和b为整数时,省略inc可以生成间隔为1的数列。根据a和b的大小不同,inc可以采用正数、负数。
      • 等间距线形生成方法:x=linspace(a,b,n),采用函数在a和b之间的区间内得到n个线形采样数据点。
      • 等间距对数生成方法:x=logspace(a,b,n),在设定采样点总个数n的情况下,采用常用对数计算得到n个采样点数据值。
    • 数组内容的访问:(e_two_15.m
      • 对单个元素:通过选择元素的索引(访问索引必须是正整数)
      • 对数组内的一块数据:通过冒号方式
      • 对部分数值:通过构造访问序列或通过构造向量列表来加以访问
    • (一维数组)如果元素之间通过“;”分隔元素,生成列向量。列向量和行向量之间可以通过转置操作 ’ 来进行相互之间的转化。(注意:如果一维数组的元素是复数,经转置操作后,得到的是复数的共轭转置结果,而采用点-共轭转置操作时得到的是转置数组,不进行共轭操作)
    • 一维数组的方向(e_two_16.m
  • 多维数组的创建
    • 创建二维数组的几种方法:(e_two_17.m
      • 直接输入法:不同行之间的数据用分号进行分割,同一行的元素用都逗号或空格进行分隔
      • 通过Array Editor来输入多维数组:工作空间出现矩阵编辑器表格,可以直接输入矩阵的数据
      • 对于大规模的数据,可以通过数据表格方式来输入:单击选择工作空间的Import Data图标,选中已经编写好的矩阵数据文件后,导入到工作空间中
      • 通过MATLAB所提供的其他函数来生成二维数组
    • 要严格保证所生成矩阵的行和列的数目相同;在直接生成矩阵的过程中,可以通过按回车键来保证矩阵生成另一行元素(不用打分号)
    •  多维数组(n维数组),三维数组(行、列、页)
    • 三维数组的创建方法:(e_two_18.m
      • 直接创建方法:使用内置函数来创建三维数组,如zeros、ones、rand、randn等
      • 直接索引的方法
      • 使用内置函数reshape和repmat将二维数组转换为三维数组
      • 使用cat函数将低维数组转化为高维数组
  • 数组的运算
    • 数组和标量之间的运算:标量和数组的元素之间直接进行数学运算
    • 数组和数组之间的余运算:乘除和乘方运算,若采用点方式计算,表明是数组的元素之间的运算;若直接进行乘除乘方运算,则是向量或矩阵之间的运算。
    • 二维数组的运算(e_two_19.m
    • 对于矩阵的加减运算及其他点运算,都是针对矩阵的元素进行的;对于乘、除、乘方运算则通过矩阵计算进行。
  • 常用的标准数组
    • 常用到的标准数组:全0数组、全1数组、单位矩阵、随机矩阵、对角矩阵及元素为指定常数的数组等。
    • 表2-16    标准数组生成函数(e_two_20.m
函数说明用法备注
eye生成单位矩阵

y=eye(n)

y=eye(m,n)

y=eye(size(A))

eye(m,n,classname)

eye([m,n],classname)

适用于生成二维矩阵
ones生成全1数组

y=ones(n)

y=ones(m,n)

y=ones([m,n])

y=ones(m,n,p...)

y=ones([m,n,p,...])

y=ones(size(A))

y=ones(m,n, ... ,classname)

y=ones([m,n,...],classname)

classname用于指定生成数组的

数据类型,可以选择MATLAB中

的任何数据类型

rand

生成随机数组,数组

元素均匀分布

y=rand

y=rand(n)

y=rand(m,n)

y=rand([m,n])

y=rand(m,n,p,...)

y=rand([m,n,p,...])

y=rand(size(A))

rand(method,s)

s=rand(method)

method用于指定函数所采用的

方法,可以选择state、seed、

twister

randn

生成随机数组,数组

元素服从正太分布

y=randn

y=randn(n)

y=randn(m,n)

y=randn([m,n])

y=randn(m,n,p,...)

y=randn([m,n,p,...])

y=randn(size(A))

randn(method,s)

s=randn(method)

 zeros生成全0数组 

y=zeros(n)

y=zeros(m,n)

y=zeros([m,n])

y=zeros(m,n,p,...)

y=zeros([m,n,p,...])

y=zeros(size(A))

zeros(m,n,...,classname)

zeros([m,n,...],classname) 

— 

  • 低维数组的寻址和搜索
    • 数组中包含多个元素,在对数组的单个元素或多个元素进行访问时,需要对数组进行寻址操作。
    • 表2-17    数组寻址技术(e_two_21.m
寻址方法说明
A(r, c)用定义的r和c索引向量来寻找A的子数组
A(r, :)用r向量定义的行和对应于行的列得到的A的子数组
A(:, c)用c向量定义的列和对应于列的行得到的A的子数组
A(:)用列向量方式来一次寻址数组A的所有元素。如果A(:)出现在等号的左侧,表明用等号右侧的元素来填充数组,而A的形状不发生变化
A(k)用单一索引向量k来寻找A的子数组
A(x)用逻辑数组x来寻找A的子数组,x的维数和A的维数必须一致
    •  sort函数进行排序:
      • 一维数组排序(e_two_22.m
      • 二维数组的排序(e_two_23.m):sort函数只对数组的列进行排序;若对行进行排序,则需要为sort函数提供第二个参数2。 
    • find函数可以返回符合条件的数组的索引数值:
      • 子数组搜索(e_two_24.m
      • 搜索最大值最小值(e_two_25.m):使用max和min函数(二维数组,返回每一列的最大或最小值)
  • 低维数组的处理函数
    • 表2-18    低维数组的处理函数
函数说明
fliplr以数组的垂直中线为对称轴,交换左右对称位置上的数组元素
flipud以数组的水平中线为对称轴,交换上下对称位置上的数组元素
rot90按逆时针对数组进行旋转
circshift循环移动数组的一行或一列
reshape结构变换函数,交换前后函数的元素个数相等 
diag对角线元素提取函数
triu保留方阵的上三角,构成上对角方阵
tril保留方阵的下三角,构成下对角方阵
kronecker两个数组的kronecker乘法,构成新的数组
repmat数组复制生成函数
    • 矩阵的形式变换(e_two_26.m
    • 矩阵的kronecker乘法(e_two_27.m
      • 对于kron函数执行的是kronecker的张量乘法运算:将第一个参数数组的每一个元素和第二个参数数组相乘,形成一个分块矩阵
  • 高维数组的处理和运算
    • 表2-19    高维数组的处理和运算函数
函数说明
squeeze用此函数来消除数组中的“孤维”,即大小等于1的维,从而起到降维作用
sub2ind将下标转换为单一索引数值
ind2sub将数组的单一索引数值转换为数组的下标
flipdim沿着数组的某个维轮换顺序,第二个参数为变换的对称面
shiftdim维序号循环轮换移动
permute对多维数组进行广义共轭转置操作
ipermute取消转置操作
size获取数组的维数大小数值

(五)单元数组和结构体

  • 单元数组的创建和操作
    • 单元数组中的每一个元素称为单元,单元可包含任何类型的MATLAB数据
    • 单元数组的创建方法分为两种:(e_two_29.m
      • 通过赋值语句直接创建
        • 按单元索引法:采用标准数组的赋值方法,赋值时赋给单元的数值通过花括号({})将单元内容括起来
        • 按内容索引法:将花括号写在等号左边,即放在单元数组名称后
      • 通过cell函数首先为单元数组分配内存空间,再对每个单元进行赋值
    • 单元数组内容的显示(e_two_30.m
    • 通过cell函数为单元数组赋值(e_two_31.m
    • 单元数组的操作(e_two_32.m
    • 改变单元数组的结构(e_two_33.m
  • 单元数组函数
函数说明
cell生成一个空的单元数组,然后再向其中添加数据
celldisp显示单元数组的所有单元的内容
iscell判断是否为单元数组
isa判断是否为单元数组的一个单元
deal将多个单元的数据取出来后赋予一个独立的单元数组变量
cellfun将一个指定的函数应用到一个单元数组的所有单元
num2cell从一个数组中提取指定元素,填充到单元数组
  • 结构体创建
    • 结构体(structure)通过字段(fields)来对元素进行索引,在访问时只需通过点号来访问数据变量
    • 结构体可以通过两种方法创建(e_two_35.m
      • 直接赋值
      • 通过struct函数创建
  • 结构体函数
函数说明
,获取多个结构体数组元素的值
cat提取结构体数据后依次排列
deal提取多个元素的数值赋予不同的变量,或对结构体字段赋值
fieldnames返回结构体的字段名
isfield判断一个字段名是否为指定结构体中的字段名
class判断一个变量是否为结构体变量,输出类型名
isstruct和class一样,判断一个变量是否为结构体变量,输出逻辑值
rmfield删除结构体的字段
orderfield对结构体的字段进行排序

免责声明:文章转载自《Matlab学习笔记(三)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇浅析小程序云原生数据库的设计与应用一个专门下载全球气象站数据的网站(包括中国700多个站)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Bzoj 2789: [Poi2012]Letters 树状数组,逆序对

2789: [Poi2012]Letters Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 278  Solved: 185[Submit][Status][Discuss] Description 给出两个长度相同且由大写英文字母组成的字符串A、B,保证A和B中每种字母出现的次数相同。 现在每次可以...

DELPHI字符串、数组操作函数(转)

对字符串及数组的操作,是每个程序员必须要掌握的。熟练的使用Delphi的这些函数,在编程时能更加得心应手。   1.Copy   功能说明:该函数用于从字符串中复制指定范围中的字符。该函数有3个参数。第一个参数是数据源(即被复制的字符串),第二个参数是从字符串某一处开始复制,第三个参数是要复制字符串的长度(   即个数)。最后函数返回一个新的字符串(即是我...

Go语言基础之数组

Go语言基础之数组 本文主要介绍数组(array)及它的基本使用。 Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法: // 定义一个长度为3元素类型为int的数组a var a [3]int 数组定义: var 数组变量名 [元素数量]T 比如:var a...

jmeter_上一请求的响应值作为下一请求的参数

Json响应格式 json串中{}表示对象,[]表示数组 JSON Extractor使用jsonpath表达式匹配,可以一次取多个变量值。 $表示响应的根对象。 取子对象或对象的属性用. 取数组里的对象用[],数组索引从0开始。 获取数组的所有值$[*].属性 1)新建一个请求,返回json响应格式的,分析响应结果 1)在上一请求上点...

零基础入门深度学习(5)

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,...

oracle 嵌套表 老猫

一、嵌套表的定义:     嵌套表是表中之表。一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。在某种意义上,它是在一个表中存储一对多关系的一种方法。考查一个包含部门信息的表,在任何时间内每个部门会有很多项目正在实施。在一个严格的关系模型中,将需要建立两个独立的表department和project.   ...