下面是我想做的一个例子。给定两个结构数组,我想搜索test_value
结构以查看是否有任何字段为空。如果字段为空,我想用default_value
结构中的相应值替换空。
test_values = struct();
test_values.x = 2;
test_values.y = [1 0 4];
test_values.z = [];
default_values = struct();
default_values.x = 0;
default_values.y = [1 1 1];
default_values.z = 2;
% Check if empty. I want to check every field in the structure but too many
% fields for this approach.
if isempty(test_values.z)
test_values.z = default_values.z;
end
有人对每个字段使用if
语句会更好吗?感谢您提供的任何帮助。谢谢。
答案 0 :(得分:2)
您可以使用fieldnames
获取所有字段,然后简单地遍历
f = fieldnames( test_values );
for ii = 1:numel(f)
if isempty( test_values.(f{ii}) )
% Note the use of the .(___) notation to index a field with a string variable
test_values.(f{ii}) = default_values.(f{ii});
end
end
在尝试应用该字段之前,您还可以使用isfield
来检查该字段是否为默认字段!