Sponsored Content
Full Discussion: Improving code
Top Forums Shell Programming and Scripting Improving code Post 302991081 by RudiC on Monday 6th of February 2017 12:15:09 PM
Old 02-06-2017
Certainly, we're not here to put you in "digital pillory". On the other hand, wouldn't it be nice and satisfying to see some learning curve?
However, see if this comes close to what you need although it saves 12 awk processes, 5 temp files, 18 file operations, and 7 readings of lengthy files:
Code:
awk '
NR > 1          {DS = int( sqrt ( ($6 - PRV6) ^2 + ($7 - PRV7) ^2) / 1E3 )
                 DT = int( ($8 - PRV8) / 1E6 )
                }

                {PRV6 = $6
                 PRV7 = $7
                 PRV8 = $8
                }

DT >= 18        {CNTDT++
                 next
                }

DS  > 11        {CNTSS++
                 next
                }

DS >=  2        {CNTDS++
                }

END             {SUM = ++CNTDT + CNTSS + CNTDS
                 LNS = "\t-------------------------------------------\n"
                 FMT = "\t%-15s\t%9d\t%8.1f\n"

                 printf LNS "\tCode \t           Total-VPs \t  Total-PCT\n" LNS

                 printf (FMT, "INFO1:", CNTDT, CNTDT / SUM * 100)
                 printf (FMT, "INFO2:", CNTDS, CNTDS / SUM * 100)
                 printf (FMT, "INFO3:", CNTSS, CNTSS / SUM * 100)

                 printf LNS "\tTotal:\t%17d\n" LNS , SUM


                }
' /tmp/tmp1
    -------------------------------------------
    Code                Total-VPs       Total-PCT
    -------------------------------------------
    INFO1:                    85         0.5
    INFO2:                 11151        66.7
    INFO3:                  5481        32.8
    -------------------------------------------
    Total:                16717
    -------------------------------------------

This User Gave Thanks to RudiC For This Post:
 

6 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

improving my script

Hi; I want to access our customer database to retreive all clients that have as language index 2 or 3 and take their client number. My input is a file containing all client numbers. i access the data base using a function call "scpshow". The total number of clients i want to scan is 400 000... (6 Replies)
Discussion started by: bcheaib
6 Replies

2. UNIX for Dummies Questions & Answers

Improving Unix Skills

Kindly any advice to improve my unix skills as electronic books i can download or valuable sites as this one etc... (3 Replies)
Discussion started by: sak900354
3 Replies

3. Shell Programming and Scripting

Improving this validate function

Hi guys, I use this function which was provided to me by someone at this site. It works perfectly for validating a users input option against allowed options.. example: validateInput "1" "1 3 4 5" would return 0 (success) function validateInput { input=$1 allowedInput=$2 for... (4 Replies)
Discussion started by: pyscho
4 Replies

4. Shell Programming and Scripting

Improving code by using associative arrays

I have the following code, and I am changing it to #!/bin/bash hasArgumentCModInfile=0 hasArgumentSrcsInfile=0 hasArgumentRcvsInfile=0 OLDIFS="$IFS" IFS="|=" # IFS controls splitting. Split on "|" and "=", not whitespace. set -- $* # Set the positional... (3 Replies)
Discussion started by: kristinu
3 Replies

5. Shell Programming and Scripting

Basic help improving for in loop

I'm obviously very new to this. I'm trying to write a simple for loop that will read the directory names in /Users and then copy a file into the same subdir in each user directory. I have this, and it works but it isn't great. #!/bin/bash HOMEDIRS=/Users/* for dirs in $HOMEDIRS; do if ];... (5 Replies)
Discussion started by: Heath_T
5 Replies

6. Shell Programming and Scripting

Need help improving my script.

Thank you for taking the time to look at this and provide input. To start, I am not a linux/unix expert but I muddle through the best I can. I am also in no way shape or form a programmer. Please keep that in mind as you read this script. This script is designed to find all files in a given... (8 Replies)
Discussion started by: garlandxj11
8 Replies
mlib_ImageNormCrossCorrel_Fp(3MLIB)									       mlib_ImageNormCrossCorrel_Fp(3MLIB)

NAME
mlib_ImageNormCrossCorrel_Fp - normalized cross correlation SYNOPSIS
cc [ flag... ] file... -lmlib [ library... ] #include <mlib.h> mlib_status mlib_ImageNormCrossCorrel_Fp(mlib_d64 *correl, const mlib_image *img1, const mlib_image *img2, const mlib_d64 *mean2, const mlib_d64 *sdev2); The mlib_ImageNormCrossCorrel_Fp() function computes the normalized cross-correlation coefficients between a pair of floating-point images, on a per-channel basis. It uses the following equations: w-1 h-1 SUM SUM (d1[x][y][i] * d2[x][y][i]) x=0 y=0 correl[i] = ------------------------------------- s1[i] * s2[i] d1[x][y][i] = img1[x][y][i] - m1[i] d2[x][y][i] = img2[x][y][i] - m2[i] 1 w-1 h-1 m1[i] = ----- * SUM SUM img1[x][y][i] w*h x=0 y=0 1 w-1 h-1 m2[i] = ----- * SUM SUM img2[x][y][i] w*h x=0 y=0 w-1 h-1 s1[i] = sqrt{ SUM SUM (img1[x][y][i] - m1[i])**2 } x=0 y=0 w-1 h-1 s2[i] = sqrt{ SUM SUM (img2[x][y][i] - m2[i])**2 } x=0 y=0 where w and h are the width and height of the images, respectively; m1 and m2 are the mean arrays of the first and second images, respec- tively; s1 and s2 are the un-normalized standard deviation arrays of the first and second images, respectively. In usual cases, the normalized cross-correlation coefficient is in the range of [-1.0, 1.0]. In the case of (s1[i] == 0) or (s2[i] == 0), where a constant image channel is involved, the normalized cross-correlation coefficient is defined as follows: #define signof(x) ((x > 0) ? 1 : ((x < 0) ? -1 : 0)) if ((s1[i] == 0.) || (s2[i] == 0.)) { if ((s1[i] == 0.) && (s2[i] == 0.)) { if (signof(m1[i]) == signof(m2[i]) { correl[i] = 1.0; } else { correl[i] = -1.0; } } else { correl[i] = -1.0; } } The two images must have the same type, the same size, and the same number of channels. They can have 1, 2, 3 or 4 channels. They can be of type MLIB_FLOAT or MLIB_DOUBLE. If (mean2 == NULL) or (sdev2 == NULL), then m2 and s2 are calculated in this function according to the formulas shown above. Otherwise, they are calculated as follows: m2[i] = mean2[i]; s2[i] = sdev2[i] * sqrt(w*h); where mean2 and sdev2 can be the output of mlib_ImageMean() and mlib_ImageStdDev(), respectively. In some cases, the resulting coefficients of this function could be NaN, Inf, or -Inf. The function takes the following arguments: correl Pointer to normalized cross correlation array on a channel basis. The array must be the size of channels in the images. correl[i] contains the cross-correlation of channel i. img1 Pointer to first image. img2 Pointer to second image. mean2 Pointer to the mean array of the second image. sdev2 Pointer to the standard deviation array of the second image. The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE. See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ mlib_ImageAutoCorrel(3MLIB), mlib_ImageAutoCorrel_Fp(3MLIB), mlib_ImageCrossCorrel(3MLIB), mlib_ImageCrossCorrel_Fp(3MLIB), mlib_ImageNorm- CrossCorrel(3MLIB), attributes(5) 23 May 2005 mlib_ImageNormCrossCorrel_Fp(3MLIB)
All times are GMT -4. The time now is 02:56 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy