В Matlab есть способ объединить нескалярную структуру без потери пустых полей? Это мешает моей способности индексировать в структуре.
Я бы предпочел не заполнять все свои поля "y" с помощью NaN по причинам управления памятью, но я могу сделать это, если это единственный способ обойти .
«код» всегда заполнен полностью и не имеет пустых ячеек. «у» может быть полностью заполнено, но обычно это не так.
Я приведу короткий пример: упрощенная структура (это действительно десятки тысяч записей с полями более 50)
% create example structure
x = struct('y',{1 [] 3 4},'code', {{'a'}, {'b'}, {'c'}, {'b'}});
% concatenate
out = [x.y];
% find indices with code 'b'
ind = find(strcmpi([x.code], 'b'));
% desired output
outSub = out(ind)
Я ожидаю, что из даст :
out = [1 NaN 3 4]
Вместо этого я получаю:
out = [1 3 4]
При попытке использовать код для создания индекса для поиска значений в out которые соответствуют желаемому значению кода, это, очевидно, не работает.
Ошибка: Индекс превышает количество элементов массива (3).
Требуемый результат выдаст:
out = [2 4];
outSub = [NaN 4]
Я полностью открыт для индексации и по-другому.