У меня есть размер матрицы 3D (x, y, N) и размер матрицы 2D (N, N).Линейная комбинация срезов в 3D-матрице MATLAB
Я хотел бы манипулировать этими двумя способами, чтобы каждый столбец в 2D-матрице имел коэффициенты для линейной комбинации двумерных размерных (x, y) срезов в 3D-матрице. И я хотел бы сделать это для всех N столбцов в 2D-матрице.
Схематически
В настоящее время код выглядит следующим образом:
A = zeros(numel(x_axis), numel(y_axis), N);
B = zeros(numel(x_axis), numel(y_axis), N);
C = zeros(N, N)
for i = 1 : N
for j = 1 : N
A(:,:,i) = A(:,:,i) + B(:,:,j) * C(j,i);
end
end
Но это довольно медленно. Есть ли способ ускорить код MATLAB путем векторизации?
У вас есть matlab 2016b или более поздняя версия? – obchardon
К сожалению, нет. У меня есть доступ к 2015a по 2016 год. –
Хорошо, потому что matlab 2016b представляет новую функцию, называемую неявным расширением, которая может линеаризовать эту проблему. Поэтому лучше всего использовать вместо этого 'bsxfun'. – obchardon