检查结构的字段是否为空,然后为其分配默认值

时间:2018-10-20 00:15:41

标签: matlab struct

下面是我想做的一个例子。给定两个结构数组,我想搜索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语句会更好吗?感谢您提供的任何帮助。谢谢。

1 个答案:

答案 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来检查该字段是否为默认字段!