#arrays #matlab #struct #cell-array
#массивы #matlab #структура #ячейка-массив
Вопрос:
Я хотел бы обработать список изображений regionprops
и сохранить результат в массив или какой-либо список.
Моя проблема в том, что regionprops
возвращает структуру переменного размера. В моем случае это выглядит так:
stats = regionprops(L,'Centroid');
2x1 struct array with fields:
Centroid
Размер структуры зависит от изображения к изображению.
Как я могу создать объект, который содержит все мои структуры? Нужно ли мне использовать массивы ячеек?
Я попробовал следующее:
mycell = struct2cell(stats);
centers(i,:) = mycell;
Но это работает только до тех пор, пока мои массивы ячеек имеют одинаковый размер. Здесь это не так, поскольку количество обнаруженных объектов меняется от кадра к кадру.
Как я могу хранить структуры переменной длины или массивы ячеек в контейнере?
Что я должен использовать, структуры массивов ячеек?
Ответ №1:
Просто поместите каждый структурный массив stats
в отдельную ячейку. Например:
>> stats1(3).test = 1
stats1 =
1x3 struct array with fields:
test
>> stats2(2).test = 1
stats2 =
1x2 struct array with fields:
test
>> [{stats1} {stats2}]
ans =
[1x3 struct] [1x2 struct]
Комментарии:
1. Но как я могу выполнить [{stats1} {stats2}] с помощью алгоритма в цикле? Я хотел бы сделать что-то подобное
for i = 1:size(images) .... allstats{i} = stats
или что-то подобное?2. Вы получили это! Удачи с проектом!