Я произвел генерализацию внешнего произведения между 3 вектором и самим собой, чтобы получить входные данные из коллекции (матрица NxNx3) из 3 векторов.
На данный момент моя функция делает то, что я хочу (см. Пример вывода и ввода ниже), и это выглядит так.Я хотел бы сделать это быстрее, избегая двух for
циклов, которые я сейчас использую.
function [rr]=OuterVec(r)
N = size(r,1);
rr = zeros(N,N,3,3);
for i=1:N
for j=1:N
rr(i,j,:,:)=kron(reshape(r(i,j,:),[1,3]),permute(r(i,j,:),[3 2 1]));
end
end
end
Примеры ввода / вывода
c = ones(2,2);
V(1,1,:)=[1 2 3];
u = c.*V;
OuterVec (u)
ans (:,:, 1,1) =
1 1
1 1
ans (:,:, 2,1) =
2 2
2 2
ans (:,:, 3,1) =
3 3
3 3
ans (:,:, 1,2) =
2 2
2 2
ans (:,:, 2,2) =
4 4
4 4
ans (:,:, 3,2) =
6 6
6 6
ans (:,:, 1,3) =
3 3
3 3
ans (:,:, 2,3) =
6 6
6 6
ans (:,:, 3,3) =
9 9
9 9