Векторизация генерации трехмерной матрицы, выполненной в цикле до настоящего времени
До сих пор я использовал 3 цикла для построения матрицы, но это занимает так много времени, что я хотел бы векторизовать ее. Но либо это невозможно, либо я выбрал неправильный способ сделать это. Во всяком случае, я перед стеной, и мне нужна ваша помощь.
Вот петли:
AngleList = [0 : 10 : 300]; % 31 elements
Fx_mat - матрица (1000,120,31), 31 - для 31 элемента, соответствующего AngleList.
for Aaa = 1:Nb_loop1 % Nb_loop1 = 3
for Bbb = 1:Nb_loop2 % Nb_loop2 = 120
for Ccc = 1:Nb_loop3 % Nb_loop3 = 1000
Angle = rand()*300; % Then Angle is between 0 and 300
Fx_mat_interp(Aaa,Bbb,Ccc) = interp1(AngleList, Fx_mat(Ccc,Bbb,:), Angle);
end
end
end
Сначала я попытался создать матрицу с моими данными:
m_Angle = rand(Nb_loop3,Nb_loop2)*300 % 1000x120 matrix
m_AngleList = permute(reshape(repmat(AngleList,Nb_loop3,Nb_loop2),Nb_loop1,Nb_loop3,Nb_loop2),[1 3 2]);
% I repeat my AngleList vector in a 1000x120x31 matrix
for Aaa = 1:Nb_loop1
Fx_mat_interp(Aaa,:,:) = ?????(m_AngleList, Fx_mat(Nb_loop3,Nb_loop2,:), m_Angle);
end
Я хотел бы заменить????? с эквивалентом interp1, но я не могу его найти.
У вас есть идея, чтобы помочь мне, пожалуйста?
PS: и много отличных мыслей для всех вас на этот новый год.