On Thursday, September 18, 2014 2:36:53 PM UTC-5, paul analyst wrote:
>
> No idea ? 
>
> W dniu 2014-09-18 o 13:26, paul analyst pisze: 
> > I have a vector x = int (randbool (100)) 
> > a / how quickly (without the loop?) receive 10 vectors of length 10, 
> > in each field the average of the next 10 fields of the vector x 
> > (moving/stepen average of 10 values ​​at step = 10)? 
> > b / how to receive the 99 vectors of length 10 of the next 10 fields 
> > wektra x (moving/stepen average of 10 values ​​at step = 1)? 
> > 
> > Paul 


I'm not sure what the first result you want is and what you mean by 
"without the loop".  A general moving average of m vector positions with 
steps of 1 could be written

function movingavg1(v::Vector,m::Int)
    n = length(v)
    0 < m < n || error("m = $m must be in the range [1,length(v)] = 
[1,$(length(v))]")
    res = Array(typeof(v[1]/n), n-m+1)
    s = zero(eltype(res))
    for i in 1:m
        s += v[i]
    end
    res[1] = s
    for j in 1:(length(res)-1)
        s -= v[j]
        s += v[j + m]
        res[j+1] = s
    end
    res/m
end

 To test this

julia> vv = int(randbool(100));

julia> show(vv)
[0,0,0,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,1,0,0,0,1,0,1,1,0,1,1,1,1,1,0,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1,0,1,1]
julia> show(movingavg1(vv,10))
[0.6,0.7,0.8,0.8,0.7,0.7,0.7,0.7,0.7,0.6,0.7,0.6,0.5,0.5,0.6,0.5,0.5,0.5,0.4,0.5,0.5,0.6,0.7,0.8,0.7,0.7,0.7,0.7,0.7,0.7,0.6,0.5,0.4,0.3,0.4,0.5,0.4,0.4,0.4,0.3,0.3,0.3,0.3,0.4,0.3,0.3,0.3,0.2,0.2,0.2,0.3,0.3,0.3,0.2,0.3,0.2,0.2,0.3,0.4,0.4,0.4,0.4,0.5,0.6,0.6,0.7,0.7,0.7,0.6,0.6,0.6,0.7,0.7,0.6,0.5,0.5,0.6,0.5,0.5,0.6,0.6,0.5,0.4,0.5,0.5,0.4,0.3,0.4,0.4,0.4,0.4]
julia> mean(vv[1:10])
0.6

julia> mean(vv[2:11])
0.7

julia> mean(vv[91:100])
0.4


If you are always working with Bool values you are probably better off 
returning the moving sums than the moving averages.

Reply via email to