rd_average.sh 818 B

1234567891011121314151617181920212223242526272829303132333435
  1. #!/bin/bash
  2. if [ $# == 0 ]; then
  3. echo "usage: OUTPUT=<label> $0 *.out"
  4. exit 1
  5. fi
  6. TOTAL=total.out
  7. if [ -n "$OUTPUT" ]; then
  8. TOTAL="$OUTPUT.out"
  9. fi
  10. if [ -e "$TOTAL" ]; then
  11. echo "ERROR: $TOTAL already exists and will be included in average, please remove it first"
  12. exit 1
  13. fi
  14. IFS=' ' read -r VALUES <<< "$(head -n 1 $1)"
  15. VALUES=($VALUES)
  16. NUM_VALUES=${#VALUES[@]}
  17. CIEDE_ROW=9
  18. AWK_SUM='size[$1]+=$2;bytes[$1]+=$3;time[$1]+=$4;psnr[$1]+=$2*$5;psnrhvs[$1]+=$2*$6;ssim[$1]+=$2*$7;fastssim[$1]+=$2*$8;'
  19. AWK_DIV='psnr[i]/size[i],psnrhvs[i]/size[i],ssim[i]/size[i],fastssim[i]/size[i]'
  20. if [ $NUM_VALUES -ge $CIEDE_ROW ]; then
  21. AWK_SUM+='ciede[$1]+=$2*$9;'
  22. AWK_DIV+=',ciede[i]/size[i]'
  23. fi
  24. AWK_CMD="{$AWK_SUM}END{for(i in size)print i,size[i],bytes[i],time[i],$AWK_DIV;}"
  25. awk "$AWK_CMD" $@ | sort -n > $TOTAL