Я работаю с N-мерным массивом и у меня проблема с индексацией массива. У меня есть задача найти (N-1) -мерный массив в среднем N-мерном массиве.
Позвольте мне подробно объяснить с помощью трехмерного массива. A
- это трехмерный массив, который разделен на группы. В каждой группе b
- количество 2-мерных массивов в группе. Я смоделировал это как:
b=5;
A=rand(2,2,20);
groups = reshape(A, size(A,1), size(A,2),b, []);
groups
- это 4-мерный массив, 4-е измерение - это число групп (здесь оно 4).
Найти середину в каждой группе я добавил следующее l oop:
for ii=1:size(groups,4) % Loop over all groups/slices
middle(:,:,ii) = groups(:,:,(w-1)/2+1,ii); % 1 2 3 4 5 : the middle is 3
end
middle
- это трехмерный массив, который собирает средний массив в каждой группе.
Как вы видите в моем примере Я использовал b=5
(нечетное число). Моя проблема с четным числом b
.
Я пытался реализовать его как (переписать l oop выше);
l=rem(w,2);
for ii=1:size(groups,4) % Loop over all groups/slices
if l==1
middle(:,:,ii) = groups(:,:,(w-1)/2+1,ii);
else
middle(:,:,ii) = groups(:,:,(w-1)/2,ii);
end
end
Но это не работает. Matlab выдает мне ошибку в строке l=rem(w,2);
Не могли бы вы подсказать мне, как я могу это исправить? Есть ли другой способ реализовать это?