【问题标题】:How to efficiently sample a matrix in matlab, given a list of coordinates with repeatitions给定具有重复的坐标列表,如何在matlab中有效地对矩阵进行采样
【发布时间】:2016-01-31 22:57:32
【问题描述】:

我有一个矩阵坐标列表,我想从中采样矩阵元素。坐标列表是重复的,实际上比矩阵中的元素个数要大。

例如

A = magic(3)

coords = [1     1
     1     2
     1     3
     2     1
     2     2
     2     3
     3     1
     3     2
     3     3
     1     1
     1     2
     1     3
     2     1
     2     2
     2     3
     3     1
     3     2
     3     3];

我想取回一个值向量(伪代码):sample_from_matrix(A, coords);

【问题讨论】:

    标签: matlab matrix vectorization


    【解决方案1】:

    你可以这样试试:

    A( sub2ind( size(A), coords(:,1), coords(:,2) ) )
    

    如果要先删除坐标重复项:

    coords = unique( coords, 'rows' );
    A( sub2ind( size(A), coords(:,1), coords(:,2) ) )
    

    【讨论】:

    • 谢谢,比我最初的解决方案 arrayfun(@(k) A(coords(k, 1), coords(k, 2)), 1:size(coords,1))很多
    • 谢谢,不知道我的解决方案是否比你的更快。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多