【问题标题】:Grouping elements of a matrix in groups, given that they satisfy certain conditions考虑到它们满足某些条件,将矩阵的元素分组
【发布时间】:2017-05-15 10:59:03
【问题描述】:

在 Matlab 中,我有一个 (436 x 377) 矩阵,称为“距离中心”,其中包含相对于中心的(欧几里德)距离。中心位于 (243,57) = (i,j) 的位置,我选择它作为原点。因此,在矩阵“距离中心”的位置 (243,57) 上,我的值为 0。对于矩阵中的所有其他元素,我已经用 sqrt((x_i - x_j)^2 + (y_i) 计算了到中心的距离- y_j)^2)。

我现在想在 Matlab 中编写一个程序,由我执行以下操作:

我想知道满足某个条件的所有元素的位置(索引 (i,j))。例如:我想知道距离中心欧几里得距离d满足390

我正在考虑使用命令'discretize',但我不确定如何使用它。

感谢任何有关如何执行此操作的帮助。

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    如果效率不重要,我建议使用find,例如

     I = find(distance_center< 400 & distance_center >390 );
    

    这样,I 代表你感兴趣的矩阵 distance_center 中的坐标,在行坐标中占主导地位。您可以使用ind2sub 获取原始坐标。在你的情况下: [i,j]=ind2sub(size(distance_center),I); 满足您要求的元素总数等于length(I)

    【讨论】:

    • 对不起,我不明白我包含的向量到底是什么?
    • 向量I 包含矩阵distance_center 的坐标,满足它比390 更远但比400 更近的条件。假设您将通过查看distance_center(:) 对矩阵distance_center 进行线性化处理(即,它在内存中的存储方式),坐标I 表示您所追求的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多