clc
clear all
A = cell(1,6) %创建一个一行六列的元胞数组,其中包含1x6个0行0列矩阵
A{2} = eye(3)
%eye(N),返回N*N大小的单位矩阵
%这里就是将A数组第2个矩阵赋值为3x3的单位矩阵(方阵)
%注意A数组里矩阵的位置{}从1开头
A{5}=magic(4) %将A数组第5个矩阵赋值为4x4的4阶幻方矩阵
B=A{5} %用B矩阵表示A数组的第5个矩阵是什么东西
让我们逐一分析
A = cell(1,6) %创建一个一行六列的元胞数组,其中包含1x6个0行0列矩阵
命令行窗口可得结果为
A =
1×6 cell 数组
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
A{2} = eye(3)
%eye(N),返回N*N大小的单位矩阵
%这里就是将A数组第2个矩阵赋值为3x3的单位矩阵(方阵)
%注意A数组里矩阵的位置{}从1开头
结果为
A =
1×6 cell 数组
{0×0 double} {3×3 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
A{5}=magic(4) %将A数组第5个矩阵赋值为4x4的4阶幻方矩阵
B=A{5} %用B矩阵表示A数组的第5个矩阵是什么东西
结果为
A =
1×6 cell 数组
{0×0 double} {3×3 double} {0×0 double} {0×0 double} {4×4 double} {0×0 double}
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
不难看出,主对角线、副对角线、每行、每列加起来都等于34.
s = struct(field,value)
创建具有指定字段和值的结构体数组。
看一段代码
clc
clear all
books = struct('name',{{'laoba','laoma'}},'price',[20 50])
%创建一个结构体,包含name(书名),分别叫laoba、laoma;包含price(价格),
%分别是20,50元,也是一个1x2的矩阵。这个结构体赋值给books
%语法如此
books.name %选择books.name这个属性,name字段包含1行2列的元胞数组,数组中
%包含{'laoba'},{'laoma'}的子元胞数组
books.name(1) %取出name中的第一个1行1列(子)元胞数组,也就是{'laoba'}
books.name{1} %取出一个元胞数组name中的第一个值,也就是'laoba'
%总的来说,你就应该记住这两种取出方式分别取出的是什么。
小括号取出来的是cell数组。
大括号取出来的是字符串。
结果为
books =
包含以下字段的 struct:
name: {'laoba' 'laoma'}
price: [20 50]
>> books.name
ans =
1×2 cell 数组
{'laoba'} {'laoma'}
>> books.name(1)
ans =
1×1 cell 数组
{'laoba'} 注意这是数组
ans =
'laoba' 注意这是字符串。。。。
我觉得的吧这个结构体真是复杂,比如laoba、laoma那块为什么是两个大括号呢?
clc
clear all
books = struct('name',{'laoba','laoma'},'price',[20 50])
%创建一个结构体,包含name(书名),分别叫laoba、laoma;包含price(价格),
%分别是20,50元,也是一个1x2的矩阵。这个结构体赋值给books
%语法如此
books.name %选择books.name这个属性,name字段包含1行2列的元胞数组,数组中
%包含{'laoba'},{'laoma'}的子元胞数组
books.name(1) %取出name中的第一个1行1列(子)元胞数组,也就是{'laoba'}
books.name{1} %取出一个元胞数组name中的第一个值,也就是'laoba'
%总的来说,你就应该记住这两种取出方式分别取出的是什么。
如果我去掉的话,会有以下结果
books =
包含以下字段的 1×2 struct 数组:
name
price
ans =
'laoba'
ans =
'laoma'
需要花括号或点索引表达式中的一个输出,但结果有 2 个。
出错 test (line 9)
books.name(1) %取出name中的第一个1行1列(子)元胞数组,也就是{'laoba'}
>>