CAEデータ処理サンプル事例:高速フーリエ変換・FFT・周波数分析

CAEデータ処理サンプル事例:高速フーリエ変換・FFT・周波数分析

Altair Composeデータ処理サンプル集 > 2 高速フーリエ変換・FFT・周波数分析

 

<Composeのデータ処理サンプル集>
CAEの大量の計算結果の処理に苦労していませんか?大量のデータをFFT処理・周波数分析したい場合はAltair Composeを利用しましょう。
Altair ComposeはMatlab互換のスクリプト処理言語で、HyperMesh等のAltair製品を既にご利用の場合は追加契約は不要。
*本スクリプトは2017.3で作成しております

Altair Compose 製品概要

CSVファイルの時刻歴データをFFT処理

複数の計測点で得られた時刻歴波形を周波数分析するサンプルスクリプトstc_FFT_CSV.omlを紹介します。

 
入力ファイルとして1列目に時刻、2列目以降に計測データが記録されているとします(ocsillation.csv)。

 

Compose 入力ファイル
入力ファイル(ocsillation.csv)

スクリプトstc_FFT_CSV.omlの7行目のfilenameで入力ファイル名を指定します。データの列数は自動で取得します。

Compose 入力ファイル名の指定
入力ファイル名の指定(stc_FFT_CSV.oml)

入力波形は過渡状態を経て、定常状態へと遷移します。ここでは、定常となった0.5sec以降のデータに対し、FFT処理を行うことを考えます。

Compose 入力波形
入力波形

スクリプトstc_FFT_CSV.omlの18、19行目のstおよびedでFFT処理の開始時刻および終了時刻を指定します。ここでは、0.5sec~1.0secの波形をFFT処理します。一般的にFFT処理はデータ数が2^nとする必要があります。Composeでは、データ数が2^nで無い場合は高速フーリエ変換FFTではなく通常の離散フーリエ変換DFTを行います。FFTのほうが高速ですが、最近のPCのスペックでは、DFTでも問題なく処理できますので、本スクリプトは特に2^nの指定は行っていません。

Compose FFT処理の開始および終了時刻の設定
FFT処理の開始および終了時刻の設定(stc_FFT_CSV.oml)
Compose 切り出した入力波形
切り出した入力波形

FFT処理は周期関数を仮定しますので、データの始めと終わりが不連続な場合は、漏れ誤差が生じます。漏れ誤差を低減するためにはハニングウィンドウ等のウィンドウ処理を行います。本スクリプトでは31行目でハニングウィンドウを掛けています。他の窓関数を用いたい場合は、この行を修正します。

Compose ウィンドウ処理の設定
ウィンドウ処理の設定
Compose ウィンドウ処理後の波形
ウィンドウ処理後の波形

あとは、時刻歴を元に周波数軸を作成し、ウィンドウ処理した波形をFFT処理します。本処理では絶対値を出力しています。

Compose FFT処理後の周波数分析データ
FFT処理後の周波数分析データ

最後に処理したデータをテキストファイルに書き出します。

Compose 出力ファイル
出力ファイル(ocsillation.csv_fft.out)

AcuSolve計算結果の音圧時刻歴データをFFT処理

Altairの熱流体解析ソルバーAcuSolveで圧力変化の時刻歴を計算することが可能です。ここでは、その時刻歴から周波数毎の音圧レベルを求めるサンプルスクリプトstc_FFT_AS.omlを紹介します。

 

AcuSolveの圧力変化の時刻歴結果は、計測点ごとに異なるファイルで出力されます。ここでは、計測点3点とし、ファイル名はenchu_tran_set1_node1.oth~ enchu_tran_set1_node3.othとします。各ファイルには1列目ステップ数、2列目時刻、3列目圧力とします。

Compose 入力ファイル
入力ファイル(enchu_tran_set1_node1.oth~enchu_tran_set1_node1.oth)

スクリプトstc_FFT_AS.omlの9行目のfilenameで入力ファイル名を指定します。入力ファイル名は数字の直前までenchu_tran_set1_nodeとします。10行目で入力ファイルの数NNを指定します。

Compose 入力ファイル名、ファイル数の指定
入力ファイル名、ファイル数の指定(stc_FFT_AS.oml)

先と同様、定常状態のデータの切り出し、ウィンドウ処理、FFT処理を行った後、音圧計算のため、43行目にて基準圧力p0=2E-5で除算の後、20logのデシベルに変換します。

AcuSolve 音圧変換
音圧変換(stc_FFT_AS.oml)
Compose 音圧レベル
音圧レベル(enchu_tran_set1_node_fft.out)

まとめ

今回はCSVやその他ASCIIファイルを読み込み、FFT処理を行うスクリプトを紹介しました。本サンプルスクリプトおよびサンプル入出力ファイルは以下のボタンからダウンロード可能です。是非、大量のデータをFFT処理・周波数分析したい場合は、Composeおよび本サンプルスクリプトを利用してみてください。

NEW



サンプルスクリプト サンプル入出力ファイル

サンプル事例一覧に戻る

これ以外にも、さまざまなスクリプトや、スクリプトを応用した便利な使い方があります。より詳細な情報をご希望の方は、お問い合わせください。

問い合わせフォーム