여러 행의 데이터 평균

여러 행의 데이터 평균

다음과 같은 시간 단계가 포함된 데이터 파일이 있습니다 1024.

1 0.240112  0.0610352 1.00659  
2 0.240112  0.0610352 1.00659
...
1024    0.237366  0.0576172 1.00189   

나는 두 가지 일을 하고 싶다 -

  1. N개 행마다 값의 평균을 계산하여 행 수를 N배만큼 줄입니다. 예를 들어 N=16의 경우 1024/16=64행의 데이터가 남게 됩니다.
  2. 기하급수적으로 증가하는 행 수의 평균을 구합니다. 예를 들어, 2^N개 행(1-2, 3-4, 5-8, 9-16 등)마다 평균을 구하려는 경우입니다. 이 경우에는 log_2(1024)=10줄이 남습니다.

grep이 작업을 수행하기 위해 또는 awk그러한 명령을 사용할 수 있습니까 ?

답변1

첫 번째 작업:

awk '
BEGIN {
    N = 16;
}
{
    for(i = 1; i <= NF; i++) {
        arr[i] += $i;   
    }
}
NR % N == 0 {
    for(i = 1; i <= NF; i++) {
        printf "%s ", arr[i] / N;
    }
    print "";
    delete arr;

}' input.txt

두 번째 작업:

awk '
BEGIN {
    N = 2;
}
{
    for(i = 1; i <= NF; i++) {
        arr[i] += $i;   
    }
}
NR % N == 0 {
    for(i = 1; i <= NF; i++) {
        printf "%s ", arr[i] / (N - M);
    }
    print "";
    delete arr;

    M = N;
    N *= 2;
}' input.txt

관련 정보