On Sat, 31 Oct 2009, Kehl Dániel wrote:

> I have a realy simple question. In my script I want to use two
> loops. In fact I want to make some rounding. The first loop
> takes only integer values (1 to bmax), but the other should go
> from a = -b/2 to a=b/2 with specified steps. I want to name the
> resulting serires, but the genr function can not take names
> which include "-" or ",". How can I solve this problem?

Use the "sprintf" command -- see below.

> In the future I want to store the mean and the standard
> deviation of the resulting series in a matrix. How is it
> possible?

Just set up a suitable sized matrix and write into it.

> The short script reads as:
>
> alepes = 10
> bmax = 2
> loop for b=1..bmax
>     loop for (a=-b/2; a<b/2; a+=b/alepes)
>         genr x_$a_$b = round((Hozam-a)/b)*b+a
>     endloop
> endloop

Revised version:

<script>
nulldata 10
alepes = 10
bmax = 2

# dummy 'Hozam' series
series Hozam = normal()

# count the number of rows we need
k = 0
loop b=1..bmax
    loop for (a=-b/2; a<b/2; a+=b/alepes)
        k++
    endloop
endloop

# initialize statistics matrix
matrix stats = zeros(k,2)

# do the actual calculations
k = 1
loop b=1..bmax
    j = 1
    loop for (a=-b/2; a<b/2; a+=b/alepes)
        sprintf vname "x_%d_%d", j, b
        genr @vname = round((Hozam-a)/b)*b+a
        stats[k,1] = mean(@vname)
        stats[k,2] = sd(@vname)
        j++
        k++
    endloop
endloop

print stats
</script>

Allin Cottrell

Reply via email to