Предположим, что у нас есть три m-на-n матрицы равного размера: A
, B
, C
.Векторизация кода MATLAB
Каждая колонка в C
представляет временные ряды.
A
- максимальный рабочий (по длине фиксированного окна) каждого временного ряда в C
.
B
- минимальный пробег (над фиксированной длиной окна) каждого временного ряда в C
.
Есть ли способ определить T
в векторном формате?
[nrows, ncols] = size(A);
T = zeros(nrows, ncols);
for row = 2:nrows %loop over the rows (except row #1).
for col = 1:ncols %loop over the columns.
if C(row, col) > A(row-1, col)
T(row, col) = 1;
elseif C(row, col) < B(row-1, col)
T(row, col) = -1;
else
T(row, col) = T(row-1, col);
end
end
end
Это то, что я придумал до сих пор:
T = zeros(m, n);
T(C > circshift(A,1)) = 1;
T(C < circshift(B,1)) = -1;
Можете ли вы показать пример того, что 'T', как ожидается, будет? Найти это немного сложно, чтобы следовать коду ... Можете ли вы также представить пример матрицы ввода? – rayryeng
@rayryeng Я редактировал вопрос и менял имена переменных индекса цикла от 'm' до' row' и от 'n' до' col'. Надеюсь, что это станет проще. Я все еще пытаюсь придумать хороший пример того, как должен выглядеть * T *. – bluebox
Я сам выработаю код и посмотрю, смогу ли я это понять. – rayryeng