【发布时间】:2016-04-21 18:46:08
【问题描述】:
假设我们有三个大小相等的 m×n 矩阵:A、B、C。
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 我编辑了问题并将循环索引变量名称从
m更改为row,从n更改为col。我希望这能让事情变得更清楚。我仍在努力想出一个很好的例子来说明 T 应该是什么样子。 -
我会自己编写代码,看看我是否能理解它。
-
@rayryeng 为了更好地理解,我刚刚删除了一个不必要的变量。所以现在只剩下三个输入矩阵:
A、B和C。我还添加了一个描述 w.r.t.这些矩阵代表什么。
标签: matlab vectorization