0

我有两个向量

K=[1 1 1 2 1 2 1 4 2 10 4 5 1] 

L=[2 0 1 2 1 2 1 3 2 0 1 2 1]

我想将每个向量中第 7 个元素的值与该值的邻居进行比较,其中邻居是每侧该元素旁边的 5 个元素。所以对于K,第 7 个元素是1并且邻居是1 1 1 2 1 2(左邻居)和4 2 10 4 5 1(右邻居)。

对于L,第 7 个元素是1,邻居是2 0 1 2 1 2(左邻居)和3 2 0 1 2 1(右邻居)。如果第 7 个值与其每个邻居之间的差异高于某个阈值,那么我会做一些事情,例如 X=1,如果不是,那么我会做另一件事,例如X=2

因此,在我的示例中,我将阈值设置为 3,因此对于 K,第 7 个元素值为 1,并且它与其相邻的两个 10,5 之间的差值大于阈值 3,因此 X 将为 1。对于 L第 5 个元素的值为 1,并且它与其所有邻居之间的差异小于阈值 3,因此 X 将为 2。所以我想知道是否有人可以帮助我做到这一点,我不确定是否这可以在没有循环的情况下完成以节省时间。

4

1 回答 1

1

any您可以使用and来检查这种情况or

N = 5; % reference index
T = 3; % threshold

V = L; % used to pass the vector L to the if-statement
% V = K;

% formulate if-statement to check for values
% below/above index N and check if any difference
% exceeds the threshold
% the or-statement (because it does not matter if the 
% threshold is exceeded above index N or below)
% is expressed as |

if any((V(1:N-1)-V(N))>T) | any((V(N+1:end)-V(N))>T)
    X = 1;
else
    X = 2;
end

注意
取决于您的 Matlab 版本V(1:N-1)-V(N)将不起作用,因为矩阵尺寸不一致。在这种情况下使用:V(1:N-1)-ones(size(V(1:N-1))).*V(N)

于 2013-08-15T17:50:15.843 回答