给出以下三维汉克尔矩阵:
hankel_matrix = hankel(1:21, 21:999);
hankel_matrix = repmat(hankel_matrix, [1 1 no_of_weighted_composites]);
矩阵:
composites_collection = permute(reshape(data_composites.', size(data_composites, 2),1,[]),[2 3 1]);
其中data_composites是一个999 x 56矩阵。
基本上我想要实现的是使用hankel矩阵来索引复合集合中找到的56个不同的单行页面。
我原以为这就像data_composites_collection(hankel_matrix)一样简单,但只是使用data_composites_collection的第一页,并为所有56页重复此操作。
我目前的实施是:
function subsequent_hankel_index = createMovingSnapshotsOfValues(~, matrix_of_numbers, data_composites, windows, no_of_weighted_composites)
data_composites_collection = permute(reshape(data_composites.', size(data_composites, 2),1,[]),[2 3 1]);
hankel_index = NaN(260, 999, no_of_weighted_composites, size(windows, 2));
for window_size = 1:size(windows, 2);
for composite = 1:no_of_weighted_composites;
hankel_matrix = hankel(1:windows(window_size), windows(window_size):length(matrix_of_numbers));
desired_row = data_composites_collection(:,:,composite);
[rows, columns] = size(desired_row(hankel_matrix));
hankel_index(1:rows,1:columns,composite,window_size) = desired_row(hankel_matrix);
subsequent_hankel_index = hankel_index;
end
end
end
然而,对于我拥有的数据量来说,这是非常缓慢的。我假设上面的矢量化将大大有助于我的程序的速度。任何有关索引的提示或方法都将非常感激。
非常感谢提前!