У меня есть две матрицы столбцов с одинаковым числом строк:Векторизация удаления непериодического смещения из данных, где значения смещения хранятся в том же векторе, как данные
Один из матрицы столбца (назовем его T
) - это непериодическое множество уникальных целых чисел, отсортированных в порядке возрастания. T
можно моделировать:
T=sort(randperm(10E6,100)) ;
T=T';
другой матрицы столбца (назовем его C
) имеет значение 0 или 1, и обозначает состояние соответствующей строки в T
в последующей операции. -Гораздо менее вероятно, чем 1. C
можно моделировать:
C=ones(100,1);
C(randperm(100,10))=0;
В действительности, эти матрицы столбцов будут иметь несколько миллионов элементов и примеры здесь целенаправленно коротки, чтобы улучшить скорость тестирования.
Мы проходим через каждый ряд C
. Если элемент в C
имеет значение 0, то соответствующее значение строки в T
будет вычтено из всех последующих значений в каждой строке T
, пока мы не достигнем другого 0 в C
.
Теперь я пытаюсь прорисовать следующую операцию, чтобы увеличить скорость при работе с несколькими миллионами матриц элементов.
lastReset = 0;
newT = NaN*zeros(length(T),1);
for index = 1:length(C)
if C(index) == 0
lastReset = T(index);
else
newT(index) = T(index) - lastReset;
end
end
newT(C==0)=[];
Как можно прорисовать вышеописанную петлю for
?
В чем ваш вопрос? – saygins
Дорогой saygins, извините, я не включил вопрос. Теперь я редактировал сообщение с указанием моего запроса. Спасибо. –