У меня есть несколько матриц, которые мне нужно добавить в одну большую матрицу. Большая матрица (300002x50) разделяется на 0,001 секунд, а время для других 49 матриц (14250x2) примерно равно 0,02, но не равномерно распределено. Я попробовал find
, чтобы индексировать записи из меньших матриц в большую матрицу, но это было слишком медленно. С тех пор я пробовал:Как внедрить логическое индексирование быстрее в Matlab?
for a = 1:length(test)
aaa = abs(AF1(:,1)-test(a,1))<10^-6;
AF1(aaa,index)=test(a,2);
end
Где test
является 14250x2 двойной (time,data)
, AF1
является 300002x50 двойной матрицей и index
является какой столбец в AF1
данные будут добавлены. Это было немного быстрее, но оно по-прежнему занимает 99,3% (29 минут) того времени. Он работает так, как я хочу, но есть ли способ реализовать это быстрее?
Как вы получили 50 матриц? Возможно, в этом есть что улучшить. – Adriaan
И что такое индекс? Это второй цикл по всем столбцам? Или вы выбираете сразу несколько строк? –
У меня есть 49 наборов данных, и все они имеют свое собственное время (большинство разделено на .02), но некоторые из них разделены на .019 и .021, поэтому его неравномерно. Тайминги не совпадают между наборами. – mtourtelot