Matlab数组

一、基本数组创建

1. 一维数组创建

  1. 直接写

  2. (首:步长:尾)表达式,步长默认为1
    在这里插入图片描述

  3. linspace(首,尾,数量)函数,数量默认为100
    在这里插入图片描述

2. 数组转置

  1. 直接写a’
    在这里插入图片描述

  2. transpose()函数
    在这里插入图片描述

3. 二维数组创建

  1. ones(a,b)产生a*b的全1数组
    在这里插入图片描述

  2. eye(n)产生n阶单位矩阵
    在这里插入图片描述

  3. randn(“state”,0)将随机发生器置0

  4. randn(a,b)生成a*b的正态随机矩阵
    在这里插入图片描述

  5. diag(矩阵)取对角元,或利用一维数组生成对角矩阵
    在这里插入图片描述

  6. randsrc(a,b【n】,x)从数组n中随机选取元素,生成发生器状态为x的a*b的矩阵
    在这里插入图片描述

  7. magic(n),生成n维的魔力数组(各行各列及对角线上元素求和都相等)

二、数组寻址(数组访问)

1. 一维数组

  1. a(index)
    单个一维数组元素寻址

  2. a(indexarr)
    多个一维数组元素寻址

2. 二维数组

  1. 单个元素A(a,b)或者A(n)
    获取第a行b列或者整个矩阵从左到右,从上到下的第n个
  2. A(:)全元素寻址
  3. A([1,3,4,5])生成指定的一维数组
  4. A([1,2],[2,3])指定行,指定列的交点处

三、数组API

1. 数组排序

  1. sort,返回排序后的数组和原数组对应的索引
    sort演示
  2. sort对二维数组
    sort(待排序数组,排序依据(1列、2行),排序顺序(升序、降序))
    默认排序依据为1列,排序顺序为升序(ascend,降序为descend)

2. 数组检测

  1. isempty()检测一个数组是否为空数组
  2. isscalar() 检测一个数组是否只有一个元素
  3. isvector()检测一个数组是否只有一行或一列
  4. issparse()检测一个数组是否为稀疏数组(无效数据量远大于有效数据量数组的压缩形式)

3. 数组结构

  1. length()长度,指行数和列数的最大值
  2. numel()个数,指的是数组的元素总个数
  3. size()维度,返回数组的行数和列数

四、数组运算

1. 元素运算

1.1 加减

  1. 对数字,相当于数组中每个数字和这个数字运算
  2. 对数组,只能和相同维度的数组运算,对应项加减

1.2 乘除

  1. 乘法:满足线性代数矩阵乘法的规则
  2. 点乘:矩阵的对应元素相乘

1.3 逻辑

  1. 与:对应数字做与运算,都不为0返回1,否则返回0
  2. 或:对应数字做运算,其中一个不为0返回1,否则返回0
  3. 比较运算

2. 数组运算函数

  1. cumsum(数组,1列2行),累加,返回新数组
  2. sum(数组,1列2行),求和,返回向量或数字
  3. dot(a,b,dim),点乘,返回数组
  4. corss(a,b,dim),叉乘(笛卡尔积),dim为行数
  5. prod(A,dim),数组元素的乘积
  6. cumprod(A,dim),数组元素累积
  7. tril(A),提取上三角矩阵

五、高维数组(以三维数组为例)

创建

1. 函数法

用于生成二维数组的函数等可以在后面补上参数,生成更高维的数组。

2. 索引法

先创建二维数组,然后在数组寻址时加入第三个维度

3. 专有函数法

  1. reshape(数组,行数,列数,第三维度,第四维度....),将任意维数的数组转变为其他维数
  2. repmat(数组,行复制数,列复制数,第三维度复制数...),通过复制的方式创建高维数组
  3. cat(链接维数,数组1,数组2...),通过联结数组来创建高维数组

处理

  1. squeeze(),删除数组中的单一维
  2. sub2ind(维度,下标索引)ind2sub(维度,线索引),下标索引和线索引的转换
  3. permute(目标数组,维度数组),将数组的三个维度重新分配
  4. ndims(),返回数组的维数
  5. flipfim(数组,某一维),沿着某一维取对称
  6. shiftdim(数组,位数),维序号左移几位

六、单元数组(元组)

可以存储不同数据类型但是相关的东西

1. 创建

1.1 赋值语句

  1. 按单元索引法,将内容用{}括起来。
a(1,1)= {1 + 2i}
  1. 内容索引法,将花括号写在左边,右边是要赋的值。
a{2,1} = 10:-2:0

1.2 cell函数

先利用cell函数生成空的单元数组,然后填充数值。

a = cell(2,3)

生成以后依然要使用花括号来赋值

2. 处理

  1. 可以用方括号将多个单元数组括起来,形成更大的单元数组
  2. 获取子数组
  3. 置空某部分
  4. cellfun(函数名,目标元组),将某个函数应用到所有的元素上
  5. num2cell(目标元组,筛选条件),从目标数组中获取指定元素复制到新数组中。
  6. deal(目标元组,索引对应的数组),获取多个单元数组元素

3. 单元内容的获取

使用内容索引法

七、结构体数组

1. 创建结构体数组

  1. struct(属性名1,属性值1,属性名2,属性值2...)可以创建一个单独的结构体。
  2. struct(属性名1,{属性值单元数组},属性名2,{属性值单元数组})可以创建结构体数组。

2. 访问结构体数组

使用.来访问结构体数组

  1. 通过struct.name(index),来访问某个具体的结构体的属性
  2. struct.name可以访问所有结构体的这一属性
  3. 可以使用[]来将获取到的属性值整合为数组
  4. 可以使用{}将获取到的属性值整合为单元数组

八、字符串

1. 创建

  1. 使用单引号创建
  2. 使用strcat(str1,str2,str3...)函数合并字符串,会去除掉首位的空格
  3. 使用矩阵合并符创建
  4. char(字符串1,字符串2),如果字符串的长度不同,会自动在尾部添加空格补足到最长的字符串,适合创建二维字符数组。
  5. strvcat(str1,str2,str3...),字符串拼接函数,但会按照char函数的规则补齐字符串

2. 字符串比较

  1. strcmp(str1,str2),判断字符串是否等价
  2. strcmpi(str1,str2),判断字符串是否等价,忽略大小写
  3. strncmp(str1,str2,n),判断两个字符串的前n个字符是否等价
  4. strncpmi(str1,str2,n),判断两个字符串的前n个字符是否等价,忽略大小写
  5. ==运算符会依次检测两个字符串中的每个字符
  6. isletter(str),判断一个字符串内各个字符是不是字母
  7. isspace(str),判断一个字符串内各个字符是不是空白字符(空格,制表符,换行符。)

3. 字符串查找

  1. findstr(长字符串,短字符串),查找短字符串在长字符串中的位置,返回开始的位置
  2. strrep(str1,str2,str3)把str1中的str2替换为str3
  3. strtok获得第一个分隔符之前的字符串
    在这里插入图片描述

4. 字符串与数值的转换

4.1 大小写转换

  1. upper(str)全转为大写,数字和符号不受影响
  2. lower(str)全转为小写,数字和符号不受影响

4.2 字符串转数字

  1. eval(str)字符串转为数字
  2. sscanf(str,format)字符串转为对应转义符的数字

4.3 数字转字符串

  1. num2str(number)
  2. int2str(number)
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值