使用3D汉克尔矩阵在MATLAB中索引3D矩阵

时间:2015-08-21 12:51:32

标签: performance matlab matrix indexing

给出以下三维汉克尔矩阵:

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

然而,对于我拥有的数据量来说,这是非常缓慢的。我假设上面的矢量化将大大有助于我的程序的速度。任何有关索引的提示或方法都将非常感激。

非常感谢提前!

0 个答案:

没有答案