Matlab数组
·
一、基本数组创建
1. 一维数组创建
-
直接写
-
(首:步长:尾)表达式,步长默认为1
-
linspace(首,尾,数量)函数,数量默认为100
2. 数组转置
-
直接写a’

-
transpose()函数
3. 二维数组创建
-
ones(a,b)产生a*b的全1数组
-
eye(n)产生n阶单位矩阵
-
randn(“state”,0)将随机发生器置0 -
randn(a,b)生成a*b的正态随机矩阵
-
diag(矩阵)取对角元,或利用一维数组生成对角矩阵
-
randsrc(a,b【n】,x)从数组n中随机选取元素,生成发生器状态为x的a*b的矩阵
-
magic(n),生成n维的魔力数组(各行各列及对角线上元素求和都相等)
二、数组寻址(数组访问)
1. 一维数组
-
a(index)
-
a(indexarr)
2. 二维数组
- 单个元素
A(a,b)或者A(n)
获取第a行b列或者整个矩阵从左到右,从上到下的第n个 A(:)全元素寻址A([1,3,4,5])生成指定的一维数组A([1,2],[2,3])指定行,指定列的交点处
三、数组API
1. 数组排序
sort,返回排序后的数组和原数组对应的索引
- sort对二维数组
sort(待排序数组,排序依据(1列、2行),排序顺序(升序、降序))
默认排序依据为1列,排序顺序为升序(ascend,降序为descend)
2. 数组检测
isempty()检测一个数组是否为空数组isscalar()检测一个数组是否只有一个元素isvector()检测一个数组是否只有一行或一列issparse()检测一个数组是否为稀疏数组(无效数据量远大于有效数据量数组的压缩形式)
3. 数组结构
length()长度,指行数和列数的最大值numel()个数,指的是数组的元素总个数size()维度,返回数组的行数和列数
四、数组运算
1. 元素运算
1.1 加减
- 对数字,相当于数组中每个数字和这个数字运算
- 对数组,只能和相同维度的数组运算,对应项加减
1.2 乘除
- 乘法:满足线性代数矩阵乘法的规则
- 点乘:矩阵的对应元素相乘
1.3 逻辑
- 与:对应数字做与运算,都不为0返回1,否则返回0
- 或:对应数字做运算,其中一个不为0返回1,否则返回0
- 比较运算
2. 数组运算函数
cumsum(数组,1列2行),累加,返回新数组sum(数组,1列2行),求和,返回向量或数字dot(a,b,dim),点乘,返回数组corss(a,b,dim),叉乘(笛卡尔积),dim为行数prod(A,dim),数组元素的乘积cumprod(A,dim),数组元素累积tril(A),提取上三角矩阵
五、高维数组(以三维数组为例)
创建
1. 函数法
用于生成二维数组的函数等可以在后面补上参数,生成更高维的数组。
2. 索引法
先创建二维数组,然后在数组寻址时加入第三个维度
3. 专有函数法
reshape(数组,行数,列数,第三维度,第四维度....),将任意维数的数组转变为其他维数repmat(数组,行复制数,列复制数,第三维度复制数...),通过复制的方式创建高维数组cat(链接维数,数组1,数组2...),通过联结数组来创建高维数组
处理
squeeze(),删除数组中的单一维sub2ind(维度,下标索引)和ind2sub(维度,线索引),下标索引和线索引的转换permute(目标数组,维度数组),将数组的三个维度重新分配ndims(),返回数组的维数flipfim(数组,某一维),沿着某一维取对称shiftdim(数组,位数),维序号左移几位
六、单元数组(元组)
可以存储不同数据类型但是相关的东西
1. 创建
1.1 赋值语句
- 按单元索引法,将内容用
{}括起来。
a(1,1)= {1 + 2i}
- 内容索引法,将花括号写在左边,右边是要赋的值。
a{2,1} = 10:-2:0
1.2 cell函数
先利用cell函数生成空的单元数组,然后填充数值。
a = cell(2,3)
生成以后依然要使用花括号来赋值
2. 处理
- 可以用方括号将多个单元数组括起来,形成更大的单元数组
- 获取子数组
- 置空某部分
cellfun(函数名,目标元组),将某个函数应用到所有的元素上num2cell(目标元组,筛选条件),从目标数组中获取指定元素复制到新数组中。deal(目标元组,索引对应的数组),获取多个单元数组元素
3. 单元内容的获取
使用内容索引法
七、结构体数组
1. 创建结构体数组
struct(属性名1,属性值1,属性名2,属性值2...)可以创建一个单独的结构体。struct(属性名1,{属性值单元数组},属性名2,{属性值单元数组})可以创建结构体数组。
2. 访问结构体数组
使用.来访问结构体数组
- 通过
struct.name(index),来访问某个具体的结构体的属性 struct.name可以访问所有结构体的这一属性- 可以使用
[]来将获取到的属性值整合为数组 - 可以使用
{}将获取到的属性值整合为单元数组
八、字符串
1. 创建
- 使用单引号创建
- 使用
strcat(str1,str2,str3...)函数合并字符串,会去除掉首位的空格 - 使用矩阵合并符创建
char(字符串1,字符串2),如果字符串的长度不同,会自动在尾部添加空格补足到最长的字符串,适合创建二维字符数组。strvcat(str1,str2,str3...),字符串拼接函数,但会按照char函数的规则补齐字符串
2. 字符串比较
strcmp(str1,str2),判断字符串是否等价strcmpi(str1,str2),判断字符串是否等价,忽略大小写strncmp(str1,str2,n),判断两个字符串的前n个字符是否等价strncpmi(str1,str2,n),判断两个字符串的前n个字符是否等价,忽略大小写- ==运算符会依次检测两个字符串中的每个字符
isletter(str),判断一个字符串内各个字符是不是字母isspace(str),判断一个字符串内各个字符是不是空白字符(空格,制表符,换行符。)
3. 字符串查找
findstr(长字符串,短字符串),查找短字符串在长字符串中的位置,返回开始的位置strrep(str1,str2,str3)把str1中的str2替换为str3strtok获得第一个分隔符之前的字符串
4. 字符串与数值的转换
4.1 大小写转换
upper(str)全转为大写,数字和符号不受影响lower(str)全转为小写,数字和符号不受影响
4.2 字符串转数字
eval(str)字符串转为数字sscanf(str,format)字符串转为对应转义符的数字
4.3 数字转字符串
num2str(number)int2str(number)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)