我正在学习结构迭代,并尝试在循环中输出内容
patient.(fields{i})
在此'New Name'
期间,它会提供不属于我[]
的{{1}}和struct
。这些价值来自哪里?
输出结果为:
ans = 'name'
ans = John Doe
ans = Ann Lane
ans = New Name
ans = 'billing'
ans = 127
ans = 28.5000
ans = []
ans = 'test'
ans = 79.0000 75.0000 73.0000
180.0000 178.0000 177.5000
220.0000 210.0000 205.0000
ans = 68 70 68
118 118 119
172 170 169
ans = []
答案 0 :(得分:2)
您之前必须已分配patient(3).name = 'New Name'
,并且由于您的代码仅覆盖了patient
的第一个和第二个元素,因此第三个元素保持不变,因此在循环期间出现。
您可以使用size
或numel
numel(patient)
% 3
为防止这种情况发生,您可以在分配前将struct
初始化为空struct
% Initialize it
patient = struct()
% Now populate
patient(1).name = 'whatever';
或明确清除变量clear patient
以确保不会发生这种情况。
clear patient
% Now populate it
patient(1).name = 'whatever';
另外,作为旁注,其他字段为[]
的原因是因为如果向现有struct
数组添加新字段,则所有struct
条目都在数组将接收[]
作为新字段的值
clear patient
patient(2).name = 'New Name';
patient(1).name = 'Test';
% Add a new field only to patient(2)
patient(2).date = 'today';
% patient(1).date becomes []
patient(1).date
% []