【发布时间】:2023-03-21 04:42:01
【问题描述】:
我有一个从零开始的向量,然后是一些正值,然后又是零。我想获取位于非零值中间的单元格的索引。例如,如果A=[0;0;0;2;2;3;5;7;0;0],则中间单元格的索引将为 3,其值为 3。
【问题讨论】:
标签: arrays matlab vector indexing
我有一个从零开始的向量,然后是一些正值,然后又是零。我想获取位于非零值中间的单元格的索引。例如,如果A=[0;0;0;2;2;3;5;7;0;0],则中间单元格的索引将为 3,其值为 3。
【问题讨论】:
标签: arrays matlab vector indexing
假设您在 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))))
【讨论】:
A(..)。要使用第二种方法获取索引,需要添加额外的代码。让我知道您是否也想这样做,或者这没有意义。
round((find(A~=0,1) + find(A~=0,1,'last'))/2) 获取“绝对”索引(6)。或(nnz(A)+1)/2 获取“相对”索引(3)
nnz 可能是一个单独的答案!我有点误解了这个问题,并认为需要该值,实际上需要相对中间指数。我猜这个标题就是这样引导我的。
round(mean(find(diff(A~=0))))