ファイル1のフォルマント[1]の周波数と帯域幅をファイル2のフォルマント[1]の周波数と帯域幅に変更したいと思います。この交換はnフレームに対して行う必要があります。 Unixスクリプトでこれを行う方法は1000フレームです。助けてください。
ファイル1:
frames []:
frames [1]:
intensity = 0.006356559616564358
nFormants = 5
formant []:
formant [1]:
frequency = 403.06628436252515
bandwidth = 160.21467462436982
formant [2]:
frequency = 1507.54711702621
bandwidth = 519.232413949129
formant [3]:
frequency = 2577.174907989416
bandwidth = 1535.5870557191413
formant [4]:
frequency = 3764.624274996511
bandwidth = 209.668143917888
formant [5]:
frequency = 4823.479775451361
bandwidth = 357.147764183363
frames [2]:
intensity = 0.007108941260004555
nFormants = 5
formant []:
formant [1]:
frequency = 420.7936179207871
bandwidth = 156.6697641580339
formant [2]:
frequency = 1434.5440278308877
bandwidth = 377.849704303127
formant [3]:
frequency = 2620.589627797242
bandwidth = 1336.5922989596068
formant [4]:
frequency = 3772.337062263397
bandwidth = 248.2627364453784
formant [5]:
frequency = 4748.112746186265
bandwidth = 244.23733261870277
ファイル2:
frames []:
frames [1]:
intensity = 0.306356559616564358
nFormants = 5
formant []:
formant [1]:
frequency = 203.06628436252515
bandwidth = 150.21467462436982
formant [2]:
frequency = 1607.54711702621
bandwidth = 629.232413949129
formant [3]:
frequency = 3577.174907989416
bandwidth = 3535.5870557191413
formant [4]:
frequency = 4764.624274996511
bandwidth = 309.668143917888
formant [5]:
frequency = 5823.479775451361
bandwidth = 457.147764183363
frames [2]:
intensity = 0.007108941260004555
nFormants = 5
formant []:
formant [1]:
frequency = 320.7936179207871
bandwidth = 156.6697641580339
formant [2]:
frequency = 1334.5440278308877
bandwidth = 377.849704303127
formant [3]:
frequency = 2520.589627797242
bandwidth = 1336.5922989596068
formant [4]:
frequency = 4472.337062263397
bandwidth = 248.2627364453784
formant [5]:
frequency = 4648.112746186265
bandwidth = 244.23733261870277
ベストアンサー1
awk oneliner (与えられた仮定に基づいて):
awk '{lines[FILENAME,FNR]=$0;last=FNR}END{for(i=1;i<=last;i++){mod=(i-7+19)%19;print(lines[mod>1?"file1":"file2",i])}}' file1 file2
分析は次のとおりです。
{
lines[FILENAME,FNR]=$0;
last=FNR
}
上記は各ファイルの行を保存します。また、FNR(ファイルレコード番号)を保存して、ファイルに何行があるかを確認することもできます。
END {
for(i=1;i<=last;i++) {
mod=(i-7+19)%19;
print(lines[mod>1?"file1":"file2",i])
}
}
上記のコードは各行を繰り返し、値に従ってファイル1または2の行を印刷しますmod
。 mod
7行目から19行ごとに計算すると、フレームごとにフォルマント[1]データに到達します。