Date:2011-03-05 23:34:07 (13 years 23 days ago)
Author:Werner Almesberger
Commit:bcd6e09189b15d85f8fbd4c832391644412b28e8
Message:usrp/sps/: added min/avg/max summary image

- range: generate min/avg/max data from FFT files
- vizr: plot the output of "range"
- row: make "viz" keep the FFT output and use it to generate the summary
Files: usrp/sps/range (1 diff)
usrp/sps/row (1 diff)
usrp/sps/vizr (1 diff)

Change Details

usrp/sps/range
1#!/usr/bin/perl
2
3sub read
4{
5    local ($n) = "$_[0].fft";
6    local (@f);
7    local $i = 0;
8    local $ym, $v;
9
10    open(FILE, $n) || die "$n: $!";
11    while (<FILE>) {
12        chop;
13        push(@f, $_);
14        $ym = $_ unless defined $ym && $ym > $_;
15    }
16    close FILE;
17    for (@f) {
18        $v = $_-$ym;
19        $min[$i] = $v unless defined $min[$i] && $min[$i] < $v;
20        $max[$i] = $v unless defined $max[$i] && $max[$i] > $v;
21        $sum[$i] += $v;
22        $i++;
23    }
24}
25
26
27sub usage
28{
29    print STDERR "usage: $0\n";
30    exit(1);
31}
32
33
34&usage if @ARGV;
35
36#
37# @@@ for future study: use an x axis proportional to the center frequency,
38# instead of an absolute frequency.
39#
40
41for ($f = 2405; $f <= 2480; $f += 5) {
42    &read($f);
43    &read($f+1);
44    $n += 2;
45}
46
47$mhz_per_bin = 100.0/16/@sum; # 100 MHz ADC, decimation 16
48
49$, = " ";
50for ($i = 0; $i != @sum; $i++) {
51    print $mhz_per_bin*($i-@sum/2)+0.5, "";
52    print $min[$i], $sum[$i]/$n, $max[$i], "\n";
53}
usrp/sps/row
2323        color=' bgcolor="#a0e0ff"'
2424    fi
2525    last=$prefix
26
27    echo "<TR$color><TH>$prefix"
26
27    echo "<TR$color><TH>$prefix<TD align=\"center\">Offset"
2828    f=2405
2929    while [ $f -le 2480 ]; do
30        echo "<TD align="center">$f MHz"
30        echo "<TD align=\"center\">$f MHz"
3131        f=`expr $f + 5`
3232    done
3333
34    echo "<TR><TD align="right">-0.5 MHz"
34    echo "<TR>"
35    echo "<TD><A href=\"$prefix.png\"><IMG src=\"$prefix-small.png\"></A>"
36    echo "<TD align="right">-0.5 MHz"
37
3538    f=2405
3639    while [ $f -le 2480 ]; do
37        ./viz -f LiberationSans-Bold -p $prefix-$f.png $prefix $f
40        ./viz -f LiberationSans-Bold -p $prefix-$f.png \
41          -o $f.fft $prefix $f
3842        convert -resize '15%' $prefix-$f.png $prefix-$f-small.png
3943        echo "<TD><A href=\"$prefix-$f.png\"><IMG src=\"$prefix-$f-small.png\"></A>"
4044        f=`expr $f + 5`
4145    done
4246
43    echo "<TR><TD align="right">+0.5 MHz"
47    echo "<TR>"
48    echo "<TD>"
49    echo "<TD align="right">+0.5 MHz"
50
4451    f=2405
4552    while [ $f -le 2480 ]; do
4653        f1=`expr $f + 1`
47        ./viz -f LiberationSans-Bold -p $prefix-$f1.png $prefix $f1
54        ./viz -f LiberationSans-Bold -p $prefix-$f1.png \
55          -o $f1.fft $prefix $f1
4856        convert -resize '15%' $prefix-$f1.png $prefix-$f1-small.png
4957        echo "<TD><A href=\"$prefix-$f1.png\"><IMG src=\"$prefix-$f1-small.png\"></A>"
5058        f=`expr $f + 5`
5159    done
5260
53done
61    ffts=`
62        f=2405
63        while [ $f -le 2480 ]; do
64        echo $f.fft
65        echo \`expr $f + 1\`.fft
66        f=\`expr $f + 5\`
67        done`
68
69    ./range >_tmp
70    ./vizr -f LiberationSans-Bold -p $prefix.png $prefix _tmp
71    rm -f $ffts _tmp
5472
73    convert -resize '15%' $prefix.png $prefix-small.png
74done
5575cat <<EOF
5676</TABLE>
5777EOF
usrp/sps/vizr
1#!/bin/sh
2
3usage()
4{
5    echo "usage: $0 [-f font] [-p png_file] prefix range_file" 1>&2
6    exit 1
7}
8
9
10font=
11term=
12output=
13
14while true; do
15    case "$1" in
16    -f) [ "$2" ] || usage
17        shift
18        font=$1;;
19    -p) [ "$2" ] || usage
20        shift
21        term="set term png"
22        output="set output \"$1\"";;
23    -*) usage;;
24    *)
25        break;;
26    esac
27    shift
28done
29
30[ "$2" ] || usage
31[ "$3" ] && usage
32
33prefix=$3
34file=$2
35
36gnuplot -persist <<EOF
37$term
38$output
39
40set label "$prefix" at graph 0.03, graph 0.93 font "$font,22"
41
42set xrange [-2.5:2.5]
43set yrange [-70:0]
44
45set mxtics 10
46set mytics 2
47set grid
48
49set xlabel "MHz from nominal frequency of test wave"
50
51plot "$file" using 1:4 with lines title "max" lt 2, \
52  "$file" using 1:3 with lines title "avg" lt 3, \
53  "$file" using 1:2 with lines title "min" lt 1
54EOF

Archive Download the corresponding diff file



interactive