细胞数组
1.1 创建细胞数组
(1)使用赋值语句创建细胞 数组:细胞数组使用花括号 来创建,使用逗号 “,” 或空格分隔 同一行的 单元,使用分号 “;”来分行 .
(2)使用 cell 函数创建空细胞数组 .
A={'x', [2;3;6]; 10, 2*pi}
B=cell(2,2)
C={{'LiMing','LiHong'},{'0101','0102'}; {'f','m'},{[90,80],[88,80]}}
1.2 细胞数组的操作
函数 | 说明 |
---|---|
cell2struct(cellArray,field,dim) | 将细胞数组转化成结构数组 |
iscell© | 判断是否为细胞数组 |
strcut2cell(s) | 将结构数组转化为细胞数组 |
mat2cell(A,m,n) | 将矩阵拆分成细胞数组矩阵 |
cell2mat© | 将细胞数组合并成矩阵 |
num2cell(A) | 将数值数组转换成细胞数组 |
celldis© | 显示细胞数组内容 |
cellplot© | 显示细胞数组结构图 |
结构数组
2.1 创建结构数组
(1)直接给结构数组成员变量赋值建立结构数组
(2)利用函数struct建立结构数组
clc, clear
stu=struct('name',{'LiMing','LiHong'},'number',{'0101','0102'},...
'sex',{'f','m'},'score',{[90,80],[88,80]})
stu2=[stu,stu] %对两个结构数组进行连接
name1=stu2(4).name %提取结构数组stu2的第4个元素的name域的值
name2={stu2.name} %提取结构数组stu2的name域的所有取值,构成细胞数组
2.2 结构数组的操作
函数名 | 作用 |
---|---|
struct | 生成结构数组 |
fieldnames | 获取指定结构数组所有域名 |
getfield(s,‘field’) | 获取指定域的值 |
isfield(s,’field’) | 判断是否是指定结构数组中的域 |
orderfield (s) | 对结构数组域名 按首字符 重新排序 |
setfield(s,’field’,value) | 设置结构数组指定 域的 值 |
rmfield(s,’field’) | 删除指定结构数组中的 域 |
isstruct | 检查数组是否为结构类型 |
结构数组的操作
clc, clear
stu=struct('name',{'LiMing','LiHong'},'number',{'0101','0102'},...
'sex',{'f','m'},'score',{[90,80],[88,80]})
-1 48-
a=fieldnames(stu) %获取stu所有域名
b1=getfield(stu,'number') %获取第1个元素的number域的值
b2=getfield(stu,{2},'number') %获取第2个元素的number域的值
c=isfield(stu,'sex') %判断sex是否为stu中的域
stunew=orderfields(stu) %按结构数组域名首字符重新排序
rmfield(stu,'sex') %删除sex域
结构数组和细胞数组的相互转化.
clc, clear
s_cell={'LiMing','0101','M',20;'ZhangSan','0102','F',30} %建立细胞数组
fields={'name','number','sex','age'} %建立细胞数组
s_struct=cell2struct(s_cell,fields,2) %沿第2维方向,将细胞数组转换成结构数组
t_struct=struct('name',{'LiMing','LiHong'},'number',{'0101','0102'},...
'sex',{'f','m'},'age',{20,19}) %构造结构数组
t_cell=struct2cell(t_struct) %将4个域的结构数组转换成4×1×2的细胞数组
数值数组
3.1 创建数值矩阵
1.直接输入
直接输入是最简单的矩阵构建方式。直接输入矩阵,应遵循如下几条规则:
(1)矩阵元素应当在方括号内;
(2)行内的元素,用逗号或者空格隔开;
(3)行与行之间,用分号或者回车分割;
(4)元素可以是数值或表达式。
2.通过语句和函数建立矩阵
t=[0:0.1:5]
%产生从0 到5 的行向量,元素之间间隔为0.1。
t=linspace(n1,n2,n)
%产生n1 和n2 之间线性均匀分布的n 个数 (缺省n 时,产生100 个
数)。
t=logspace(n1,n2,n)
%在n1 10 和n2 10 之间按照对数距离等间距产生n 个数(缺省n 时,产
生50 个数)。
3.从外部数据文件中导入矩阵
例如从外部纯文本文件data1.txt 导入矩阵的命令为
a=load(‘data1.txt’)
或
a=textread(‘data1.txt’)
3.2 特殊矩阵
1.单位矩阵
eye(m)
%生成m 阶单位阵。
eye(m,n)
%生成m×n 矩阵,其中得到一个可允许的最大单位矩阵而其余处补0。
eye(size(a))
%生成与矩阵a 同样大小的单位矩阵。
2.全部元素为1的矩阵
ones(n)
%生成全部元素为1 的n 阶方阵。
ones(size(a))
%生成与矩阵a 同样维数的全部元素为1 的矩阵。
ones(m,n)
%生成全部元素为1 的m×n 矩阵。
3.全部元素为0的矩阵
zeros(n)
%生成全部元素为0 的n 阶方阵。
zeros(m,n)
%生成全部元素为0 的m×n 矩阵。
4.空矩阵
空矩阵是一个特殊矩阵,这在线性代数中是不存在的。例如
a=[ ]
矩阵a 在工作空间之中,但它的大小为零。通过空矩阵的办法可以删除矩阵的行与列。
例如
b(:,3)=[]
表示删除矩阵b 的第3 列。
5.随机数矩阵
rand(m,n)
%产生m×n 矩阵,其中的元素是服从[0,1]区间上均匀分布的随机数。
randi([imin,imax],m,n)
%生成m×n 矩阵,其中的元素为[imin,imax]区间上的随机整数。
normrnd(mu,sigma,m,n)
%产生m×n 矩阵,其中的元素是服从均值为mu,标准差为sigma
的正态分布的随机数。
randn(m,n)
%产生均值为产生均值为0,方差为,方差为1的正态分布的的正态分布的m×n随机数矩阵。随机数矩阵。
exprnd(mu,m,n)
%%产生产生m×n矩阵,其中的元素是服从均值为矩阵,其中的元素是服从均值为mu的指数分布的随机数。的指数分布的随机数。
poissrnd(mu,m,n)
%%产生产生m×n矩阵,其中的元素是服从均值为矩阵,其中的元素是服从均值为mu的泊松(的泊松(Poisson))分布的随机数。分布的随机数。
unifrnd(a,b,m,n)
%%产生产生m×n矩阵,其中的元素是服从区间矩阵,其中的元素是服从区间[a,b]上均匀分布的随机数。上均匀分布的随机数。
mvnrnd(mu,sigma,n)
%产生产生n对均值向量为对均值向量为mu,协方差矩阵为,协方差矩阵为sigma的多维正态分布的多维正态分布的随机数。的随机数。
randperm(n)
产生产生1到到n的一个随机全排列。的一个随机全排列。
perms([1:n])
产生产生1到到n的所有全排列。的所有全排列。