【问题标题】:Get relative middle index from the non-zeros values of a vector从向量的非零值中获取相对中间索引
【发布时间】:2023-03-21 04:42:01
【问题描述】:

我有一个从零开始的向量,然后是一些正值,然后又是零。我想获取位于非零值中间的单元格的索引。例如,如果A=[0;0;0;2;2;3;5;7;0;0],则中间单元格的索引将为 3,其值为 3。

【问题讨论】:

    标签: arrays matlab vector indexing


    【解决方案1】:

    假设您在 A 中只有一组非零值,您可以在这里使用两种方法。

    方法 1 -

    relative_middle_index = round(numel(nonzeros(A))/2)
    

    方法 2 -

    relative_middle_index = round(diff(find(diff(A~=0)))/2)
    

    您可以使用两种方法获得绝对中间指数。

    方法 1 -

    absolute_middle_index = round((find(A~=0,1) + find(A~=0,1,'last'))/2)
    

    方法 2 -

    absolute_middle_index =  round(mean(find(diff(A~=0)))) 
    

    【讨论】:

    • @user1460166 要获取索引,只需使用圆括号内的任何内容 - A(..)。要使用第二种方法获取索引,需要添加额外的代码。让我知道您是否也想这样做,或者这没有意义。
    • @user1460166 使用round((find(A~=0,1) + find(A~=0,1,'last'))/2) 获取“绝对”索引(6)。或(nnz(A)+1)/2 获取“相对”索引(3
    • @LuisMendo nnz 可能是一个单独的答案!我有点误解了这个问题,并认为需要该值,实际上需要相对中间指数。我猜这个标题就是这样引导我的。
    • @user1460166 试试这个round(mean(find(diff(A~=0))))
    • @user1460166 用它编辑解决方案。
    猜你喜欢
    • 2021-01-26
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2020-03-26
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多