Проверка полей структуры на пустые места, затем присвоение им значений по умолчанию - PullRequest
0 голосов
/ 20 октября 2018

Ниже приведен пример того, что я хотел бы сделать.Учитывая два структурных массива, я хочу искать 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 голосов
/ 20 октября 2018

Вы можете получить все поля, используя 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, чтобы проверить, имеет ли поле значение по умолчанию, прежде чем пытаться применить его!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...