如何在 MATLAB 中找到最接近某个范围的矩阵元素值?

yas*_*n.h 1 matlab

我有一个3D 矩阵,我需要找到最接近 [0 到 1] 范围的值。例如,我有 [-2.3 -1.87 -0.021 1.1 1.54],应选择 -0.021,因为它是最接近该范围的值。

编辑:范围内将有零个或一个值。如果有,则应返回该值,如果没有,则应返回最接近的值

编辑:这是我试图正确工作的代码部分:

rt = zeros(size(audio_soundIntervals, 1), size(prtcpnt.audioAttention_ToM.sound_eventTime, 1), size(prtcpnt.audioAttention_ToM.sound_eventTime, 2));

for r = 1:size(prtcpnt.audioAttention_ToM.sound_eventTime, 1)
    for t = 1:size(prtcpnt.audioAttention_ToM.sound_eventTime, 2)
        for b = 1:size(audio_soundIntervals, 1)
       % here, I want to find the nearest element of audio_eventReshape(:, r, t) to the range [audio_soundIntervals(b, r, t), audio_soundIntervals(b, r, t) + 1]
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

Cri*_*ngo 5

最接近范围中心的值始终是您要查找的值。我建议你在纸上尝试几个例子来说服自己这一点。

范围[a,b]的中心是(ba)/2。在你的例子中,这是 0.5。

因此,找到最小值abs(A-0.5)就会给你答案。如果A是矩阵,则A(:)是可以应用运算的向量。所以我们有:

[~,indx] = min(abs(A(:)-0.5));
Run Code Online (Sandbox Code Playgroud)

或者更一般地说:

[~,indx] = min(abs(A(:)-(b-a)/2));
Run Code Online (Sandbox Code Playgroud)

indxA是您要查找的元素的线性索引,使用 获取值A(indx)