Векторизация генерации трехмерной матрицы, выполненной в цикле до настоящего времени

До сих пор я использовал 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: и много отличных мыслей для всех вас на этот новый год.

0 ответов

Другие вопросы по тегам