Qucsのマニュアルには、fft()という高速フーリエ変換のための関数が記載されている。 ところが実際使ってみると、ERROR: Unknown function ‘fft’というエラーメッセージが出て使えない。
ネットで調べてみると、fftが使われている記事が見られた。最近のバージョンで使えなくなった可能性もあるけど、エラーが出るという情報は見つからなかった。
なんでだろう?
まあ、実際は使えなくても不都合は生じない。 time2freq()という関数があって、マニュアルによるとこれはDFTらしい。 シミュレーションで使う場合、特に高速性は必要ないので、DFTが使えればFFTはいらない。 というか、FFTはサンプル数を2のべき乗にする必要があるけど、DFTなら特に制限がないから、むしろDFTの方が使いやすいともいえる。
ミキサーを作って、time2freqを試してみた。
Qucsでは乗算器が使えるので、ミキサーのシミュレーションは簡単にできる。
各部の波形。 入力1が10kHz、入力2が5kHz。
time2freq関数を使ってスペクトル表示してみると・・
差の周波数が5kHz、和の周波数が15kHzとなって正常に表示されていることがわかる。
スペクトルの間隔は、解析時間の逆数になるので、1/1ms=1kHzになっている。
解析時間を10msにすると、スペクトルの間隔が100Hzになる。
FFTを使わなくても特に不便はないので、fft()でエラーが出る件に関しては、特に深追いしないことにする。