DC受信機のシミュレーションをしようとしてtime2freq関数を使って見たけど、使い方に少し迷ったので今後のためにメモっておく。
離散的フーリエ変換では飛び飛びのスペクトルが求められるけど、シミュレーション時間とスペクトルの間隔との間に一定の関係がある。
スペクトルの周波数は、
$$f_{k} = \frac{f_{s}} {N}\times k, k = 0, 1, … , \frac{N} {2}$$
$$f_{k} : kに対応する周波数、f_{s} : サンプリング周波数、 N : 計算に使うデータ数$$
Qucsでは、サンプリング周波数は、
$$f_{s} = \frac{ポイント数} {シミュレーション時間} となる。$$
N=ポイント数なので、スペクトルの間隔は、
$$スペクトルの間隔 = \frac{f_{s}} {N} = \frac{1} {シミュレーション時間} となる。$$
今、DC受信機で、信号周波数7MHz、局発周波数7.001MHzの場合をシミュレーションすると考えると、ミキサーで発生するのは、1kHzと14.001MHzの信号になる。
1kHzの信号を検出するためには、スペクトルの間隔が1kHz以下の必要がある。 スペクトルの間隔を0.5kHzにすると、シミュレーション時間は2msが必となる。 また、14MHzの信号を検出するために15MHzまでのスペクトルを取得するばあい、ポイント数は15MHz/0.5kHz*2が必要となる。
この条件でシミュレーションしてみた。
スペクトルは、1kHzと14.001MHzが表示されている。
時間軸のグラフもOutが1kHzで、In1、In2が7MHzが表示されている。
7MHzの表示はポイント数が少ないので、正弦波の波形が滑らかになっていない。
7MHzの波形を滑らかにするために、ポイント数を適当に増加させてみた。
time2freq関数は、測定条件を適切に選ばないと、エイリアスなのか、あり得ないところにスペクトルが発生することがあるので、使用する場合には注意が必要。