MATLAB では、論理インデックスを使用できます。つまり、任意の数の条件で変数をフィルター処理できます。たとえば、vec
が任意のベクトルで、vec
負の要素がいくつあるかを知りたい場合は、次のように実行できます。
% save the elements of vec which are negative
ind = vec < 0
% vec is a logical variable. Each element of vec lower that 0 is store as 1.
% to know how many elements of vec are smaller than 0
sum(ind)
% will tell you how many ones are there in ind, meaning the number of elements in vec which
% are smaller than 0
% Of course you can do the same all at once,
sum(vec < 0)
% and you can directly access the elements in the same way
vec(vec < 0)
問題に戻ると、次のようなものを使用できます。
for i = 1:3:length(A)
%print how many 2s,3s and 4s
fprintf('%d to %d: %d, %d, %d\n',i,i+2,sum(A(i:i+2,2)==2),sum(A(i:i+2,2)==3),sum(A(i:i+2,2)==4))
end