сумма массивов matlab в структуре клетки - PullRequest
0 голосов
/ 01 июля 2018

У меня есть массив ячеек 221 x 24, S. В каждом массиве есть другой массив, состоящий из нескольких различных полей (скажем, A, B, C и D), причем каждое поле (A, B, C, D) ) - массив 50 х 50. Я хочу суммировать только A, B, C и D в каждом столбце массива S. Например:

S {1,1} .A + S {2,1} .A + ... + S {23,1} .A ...

S {1,2} .B + S {2,2} .B + ... + S {153,2} .B ...

S {111,3} .C + S {117,3} .C + ... + S {230,3} .C ...

Какой самый простой способ сделать это? Я знаю, что есть функция для суммирования, если в структуре нет полей (например, sum ([S {:}])), но мне нужны только определенные поля в каждом суммированном виде. Есть мысли?

1 Ответ

0 голосов
/ 02 июля 2018

Вероятно, существует более "MATLABy" способ избежать циклов и сделать это еще проще, но этот цикл должен быть достаточно простым:

FN = fieldnames(S{1});
for i = 1 : size(S, 1)
   sumStruct{i} = 0;
   for j = 1 : size(S, 2)
      sumStruct{i} = sumStruct{i} + S{i,j}.(FN{j});
   end
end

Предполагается, что вам нужна сумма всех S{1...N, 1}.A, S{1...N, 2}.B и т. Д., Как показано в вопросе. Если вы тоже хотите S{1...N, 1}.B, вам нужен 3-й цикл и 2 индекса для sumStruct - это должно быть относительно просто реализовать.

...