Guide to Madagascar programs |
float | d#=(d1,d2,...) | sampling in #-th dimension | |
---|---|---|---|
largeint | f#=(0,...) | window start in #-th dimension | |
int | j#=(1,...) | jump in #-th dimension | |
float | max#=(o1+(n1-1)*d1,o2+(n1-1)*d2,,...) | maximum in #-th dimension | |
float | min#=(o1,o2,,...) | minimum in #-th dimension | |
largeint | n#=(0,...) | window size in #-th dimension | |
bool | squeeze=y | [y/n] | if y, squeeze dimensions equal to 1 to the end |
bool | verb=n | [y/n] | Verbosity flag |
sfwindow is used to window a portion of the dataset. Here is a quick example: Start by creating some data.
bash$ sfmath n1=5 n2=3 o1=1 o2=1 output="x1*x2" > test.rsf bash$ < test.rsf sfdisfil 0: 1 2 3 4 5 5: 2 4 6 8 10 10: 3 6 9 12 15Now window the first two rows:
bash$ < test.rsf sfwindow n2=2 | sfdisfil 0: 1 2 3 4 5 5: 2 4 6 8 10Window the first three columns:
bash$ < test.rsf sfwindow n1=3 | sfdisfil 0: 1 2 3 2 4 5: 6 3 6 9Window the middle row:
bash$ < test.rsf sfwindow f2=1 n2=1 | sfdisfil 0: 2 4 6 8 10You can interpret the f# and n# parameters as meaning "skip that many rows/columns" and "select that many rows/columns" correspondingly. Window the middle point in the dataset:
bash$ < test.rsf sfwindow f1=2 n1=1 f2=1 n2=1 | sfdisfil 0: 6Window every other column:
bash$ < test.rsf sfwindow j1=2 | sfdisfil 0: 1 3 5 2 6 5: 10 3 9 15Window every third column:
bash$ < test.rsf sfwindow j1=3 | sfdisfil 0: 1 4 2 8 3 5: 12
Alternatively, sfwindow can use the minimum and maximum parameters to select a window. In the following example, we are creating a dataset with sfspike and then windowing a portion of it between 1 and 2 seconds in time and sampled at 8 miliseconds.
bash$ sfspike n1=1000 n2=10 > spike.rsf bash$ sfin spike.rsf spike.rsf: in="/var/tmp/spike.rsf@" esize=4 type=float form=native n1=1000 d1=0.004 o1=0 label1="Time" unit1="s" n2=10 d2=0.1 o2=0 label2="Distance" unit2="km" 10000 elements 40000 bytes bash$ < spike.rsf sfwindow min1=1 max1=2 d1=0.008 > window.rsf bash$ sfin window.rsfwindow.rsf: in="/var/tmp/window.rsf@" esize=4 type=float form=native n1=126 d1=0.008 o1=1 label1="Time" unit1="s" n2=10 d2=0.1 o2=0 label2="Distance" unit2="km" 1260 elements 5040 bytes
By default, sfwindow ``squeezes'' the hypercube dimensions that are equal to one toward the end of the dataset. Here is an example of taking a time slice:
bash$ < spike.rsf sfwindow n1=1 min1=1 > slice.rsf bash$ sfin slice.rsf slice.rsf: in="/var/tmp/slice.rsf@" esize=4 type=float form=native n1=10 d1=0.1 o1=0 label1="Distance" unit1="km" n2=1 d2=0.004 o2=1 label2="Time" unit2="s" 10 elements 40 bytesYou can change this behavior by specifying squeeze=n.
bash$ < spike.rsf sfwindow n1=1 min1=1 squeeze=n > slice.rsf bash$ sfin slice.rsf slice.rsf: in="/var/tmp/slice.rsf@" esize=4 type=float form=native n1=1 d1=0.004 o1=1 label1="Time" unit1="s" n2=10 d2=0.1 o2=0 label2="Distance" unit2="km" 10 elements 40 bytes
Guide to Madagascar programs |