2
我有一個1 x n數組。我想檢查每個元素是否大於其五個結果元素。那就是,i>i+1 & i>i+2 & i>i+3 & i>i+4 & i>i+5
。邏輯表達式的矢量化
我該如何做到這一點沒有任何循環?
我有一個1 x n數組。我想檢查每個元素是否大於其五個結果元素。那就是,i>i+1 & i>i+2 & i>i+3 & i>i+4 & i>i+5
。邏輯表達式的矢量化
我該如何做到這一點沒有任何循環?
idx = 1:numel(x)-5;
I = x(idx) > x(idx+1) & x(idx) > x(idx+2) & x(idx) > x(idx+3) & x(idx) > x(idx+4) & x(idx) > x(idx+5)
請注意,這並不真正處理x的最後5個元素,因爲它取決於您希望輸出的內容。
考慮這個矢量溶液:
N = 5; %# number of consequent values
idx = hankel(2:N+1, N+1:numel(x)); %# indices of sliding windows
y = all(bsxfun(@gt, x(1:end-N), x(idx))) %# comparison
結果是布爾值向量,其中y(i)
表示x(i)
是否大於所有的x(i+1), x(i+2), ..., x(i+N)