Douglas, big Thx, is very nice, now i can make next steps;)

@Stefan:
Ready, optimized command in Julia (analogous to "diff", "gradient") would be useful for users criminality Juli. A moving average is a common element of models.
Do not you think?
Paul

W dniu 2014-09-18 o 23:16, Douglas Bates pisze:
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