p = perms(a)表示产生a中的所有全排列矩阵,例如:
简单应用:将一个4阶幻方矩阵进行全排列,共有4!=24种方案:
A = magic(4);M = zeros(4,4,24);p = perms(1:4);for k = 1:24 M(:,:,k) = A(:,p(k,:));end
将24个幻方矩阵存储在了三维数组M中,M的大小为4*4*24。
sum(M,d)通过改变第d个下标来计算总和
sum(M,1)得到一个1*4*24的数组
sum(M,2)得到一个4*1*24的数组
sum(M,3)表示将24个矩阵块对应位置求和,得到一个4*4*1的数组,相当于4*4的矩阵
特点:
1.可以存储大小不同的矩阵序列
2.检索内容时,使用大括号下标进行索引,A{1}
3.包含其他数组的副本,而不包含指向这些数组的指针,即修改原值,元胞里的内容不变
注意()索引与{}索引的区别!!!
S = ‘Hello Matlab’ S的大小为1*12的字符数组
a = double(S) 转化为ASCII码
字符的串联:
垂直连接时两个单词的长度必须相同!!!!
包含不同长度的字符:
创建字符数组时,数组各行的长度必须相同(使用空格填充较短行的末尾)char 函数可执行这种填充操作!!!
不需要任何填充的 5×1 元胞数组,该数组的各行可以具有不同的长度!!!
cellstr() 将填充后的字符数组转换为字符向量元胞数组:
char()进行逆操作!!
结构体是多维 MATLAB 数组,包含可按文本字段标志符访问的元素。
结构体也为数组,因此也可以插入其他元素:
注意:上式70写错了,没有单引号,因为是数字,不加单引号,加上后就变成了字符了!!!
结构体的索引:
s.score 与 s(1).score,s(2).score,s(3).score表达效果相同
要根据某个文本字段(例如,name
)创建字符数组,可调用 char 函数:
括入大括号中,可以根据 name
字段创建元胞数组:
要将结构体数组的每个元素的字段赋值给结构体外部的单独变量:
结构体数据的访问:
最常用方法是指定要引用的字段的名称;
另一种方法是使用动态字段名称:
动态字段名称将字段表示为变量表达式,MATLAB 会在运行时计算这些表达式。例如将 expression
作为动态字段名称的写法:
structName.(expression)
使用标准 MATLAB 索引语法创建此字段的索引。例如,要在字段名称中计算 expression
,并在第7行的 1
至 25
列获取该字段的值:
动态字段名称示例- 下面显示的 avgscore
函数可用于计算考试的平均分数,并使用动态字段名称检索 testscores
结构体中的信息:
function avg = avgscore(test, student, first, last)for k = first:last scores(k) = test.(student).week(k);endavg = sum(scores)/(last - first + 1);
您可以运行此函数,并对动态字段 student
使用不同值。首先,对包含 10周内的分数的结构体进行初始化:
在,运行 avgscore
,并在运行时使用动态字段名称为 testscores
结构体提供学生姓名字段:
avgscore(test, 'Ann_Lane', 7, 22)avgscore(test, 'William_King', 7, 22)
参考:Matlab官方文档
联系客服