清除,对于k = 1: 10;部门(k).number = ['No. ',int2str(k)];结束
部门
部门=
具有字段的1x10结构数组:
号码
(2)添加域: 对数组中任何结构的域添加操作,会影响整个结构数组
department(1).teacher = 40; department(1).student = 300;
部门(1).PC_computer = 40;
部门
部门=
具有字段的1x10结构数组:
号码
老师
学生
PC_计算机
(3)添加子字段的操作仅影响正在操作的特定结构,而不影响整个结构数组

department(2).teacher.male = 35; department(2).teacher.female = 13;
D2T = department(2).teacher%第二结构教师域包含两个子域
D1T = department(1).teacher%第一个结构教师字段只是一个数字
D2T =
男性: 35
女: 13
D1T =
40
(4)删除子域的操作仅影响正在操作的特定结构
department(2).teacher = rmfield(department(2).teacher,'male');
department(2).teacher
ans =
女: 13
(5)删除域的操作是在整个结构数组上实现的
department = rmfield(department,'student')%删除域
部门=
具有字段的1x10结构数组:
号码
老师
PC_计算机
department = rmfield(department,{'teacher';'PC_computer'})%删除2个域
部门=
具有字段的1x10结构数组:
号码
【例4.3.2-4】结构域上数值运算和函数的运算.
n_ex = 5;%结构数组的长度
对于k = 1: n_ex,%创建一个1×5结构数组
ex(k).f =(k-1)* n_ex + [1: 5];
end;
ex%显示结构数组的结构
ex =
具有字段的1x5结构数组:
f
%在结构数组的字段中显示内容
disp([[blanks(10)'结构域中的内容'])
对于k = 1: n_ex,disp(ex(k).f),结束
结构字段中的内容
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
class(ex(1).f)%检查域中内容的类型
ans =
双
%将每个结构域中数值数组的相应位置的数据相加并求和
sum_f = zeros(1,5)
对于k = 1: n_ex,sum_f = sum_f + ex(k).f; end,sum_f
sum_f =
55 60 65 70 75
%在结构数组字段中找到每个元素的平方根
disp([[blanks(20)'ex.f'的平方根'])
对于k = 1: n_ex,
disp(sqrt(ex(k).f)),
结束
f.f的平方根值
1.0000 1.4142 1.7321 2.0000 2.2361
2.4495 2.6458 2.8284 3.0000 3.1623
3.3166 3.4641 3.6056 3.7417 3.8730
4.0000 4.1231 4.2426 4.3589 4.4721
4.5826 4.6904 4.7958 4.8990 5.0000
[示例4.3.2-5]使用struct2cell和cell2struct指令.
(1)创建“具有2个字段的结构数组”
对于k = 1: 5,
ex(k).s = ['No. ' int2str(k)];
ex(k).f =(k-1)* 5 + [1: 5];
结束
(2)显示结构数组的内容
fprintf('%s \ n','ex.s域'的内容); fprintf('%s \',blanks(4))
对于k = 1: 5; fprintf('%s \\',[ex(k).s blanks(1)]);结束
fprintf('%s \ n',blanks(1)),fprintf('%s \ n','ex.f域内容')
fork = 1: 5; disp(ex(k).f); end%显示ex.f域的内容
ex.s域的内容
1号\ 2号\ 3号\ 4号\ 5号\
f.f域的内容
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
(3)将ex结构数组转换为单元格数组
C_ex = struct2cell(ex);%将具有2个字段的(1×5)结构数组转换为(2×1×5)个单元格数组
size(C_ex)
fprintf('%s \',[C_ex {1,1,1},blanks(3)])%显示C_ex第1页第1行第1列内容

fprintf('%5g \',C_ex {2,1,1})%显示C_ex第2页,第1行结构体,第1列的内容
ans =
2 1 5
1号1 2 3 4 5
(4)将单元格数组转换为结构数组之一
FS = {'S_char';'F_num'};%带有单元格数组的预构建域名字符串
EX1 = cell2struct(C_ex,FS,1)%单元阵列到结构阵列的转换
EX1 =
具有字段的1x5结构数组:
S_char
F_numric
EX1(1)%观察新结构EX1第一结构的情况
ans =
S_char: “第一”
F_numric: [1 2 3 4 5]
(5)将单元格数组转换为结构数组2
EX2 = cell2struct(C_ex,'xx',2)
EX2 =
带有字段的2x5结构数组:
xx
(6)将单元格数组转换为结构数组三
YY = strvcat('y1','y2','y3','y4','y5'); EX3 = cell2struct(C_ex,YY,3)
EX3 =
具有字段的2x1结构数组:
y1
y2
y3
y4
y5
EX3(1)%观察到第一个结构
ans =
y1: “第一”
y2: “ 2号”
y3: “ 3号”
y4: “第4名”
y5: “ 5号”
EX3(2)%观察第二个结构
ans =
y1: [1 2 3 4 5]
y2: [6 7 8 9 10]
y3: [11 12 13 14 15]
y4: [16 17 18 19 20]
y5: [21 22 23 24 25]
[示例4.3.2-6]将带有子字段的结构数组转换为单元格数组. 此示例中的ex结构数组由示例4.2.2-5生成,然后运行以下程序.
ex(1,1).s%原始结构ex(1,1).s
ans =
1号
%添加子字段并将ex结构数组扩展为(3×5).
ex(1,1).s.sub ='SUB1';%由于该指令,原始ex(1,1).s中的字符串将消失
ex(3,1).s.sub ='SUB 3';
ex(3,1).s.num = 1/3;
ex(1,1).s%新赋值后,ex(1,1).s
的内容
ans =
sub: 'SUB 1'
新分配后
ex(3,1).s%,ex(3,1).s
的内容
ans =
sub: 'SUB 3'
num: 0.3333
C_ex_sub = struct2cell(ex)%将结构转换为单元格数组
C_ex_sub(: ,: ,1)=
[1x1结构] [] [1x1结构]
[1x5 double] [] []
C_ex_sub(: ,: ,2)=
“ 2号” [] []
[1x5 double] [] []
C_ex_sub(: ,: ,3)=
“ 3号” [] []
[1x5 double] [] []
C_ex_sub(: ,: ,4)=
“ 4号” [] []
[1x5 double] [] []
C_ex_sub(: ,: ,5)=
“ 5号” [] []
[1x5 double] [] []
size(C_ex_sub)%观察新单元格的大小
ans =
2 3 5
C_ex_sub {1,1,1}%观察第一个单元格中的内容
ans =
sub: 'SUB 1'
C_ex_sub {1,3,1}%观察(1,3,1)单元格中的含量
ans =
sub: 'SUB 3'
num: 0.3333
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-252426-2.html
后来震撼到我了