前回までアナログスペアナの原理をデジタル計算で真似をしてみる、ということをやってみたつもりですが、実際のところはあまりピンと来なかったかも知れません。本来なら急峻なバンドパスフィルタを組んでその中心周波数を、矩形波やのこぎり波に対して掃引するという方式をやってみるべきだったと思います。ただデジタル領域=離散領域で信号処理を行うということの意味と特徴(というよりは都合)をつかんでみようと思ったので正弦波、余弦波を重畳するという方法をとってみました。
そもそも普通に認識できる信号は時間も周波数も連続量です。超ミクロな話になってくると実は離散的なのかも知れませんが、ここではそういったことには触れないことにします。
さて、前回の周波数分析には特徴があります。
それは入力信号を 1 秒間だけ 1 / 2000 秒単位で取り込んだことです。つまりサンプリング周波数 2 KHz で 1 秒間データを取り込んだということです。そのためスペクトル分析できる周波数に制限が付いてしまいました。
それは分析できる最低周波数は 1 Hz で、最大周波数は 1 KHz、分解能は 1 Hz ということです。そして信号レベルはサンプリングの際のビット数で制限されます。
時々出てくる M くんの「連続的に信号を扱うことのできるアナログ信号処理の方が...」(エピソードはこちら)の話を引き出すまでもなく、現実の事情(自乗?冗談です)が許せば、アナログ式のスペアナの方が理論的な制約はありません。デジタル化すると明確に理論的な制約が出てきます。が、実際にはアナログ式の方がデバイスの性能が主だと思いますが、S / N や分解能の点で劣ってしまいます。その辺りの背景を鑑みながらどういう方式を使っていくか(設計に取り込んでいくか)が腕の見せ所となります。
講釈はこのくらいにして、大事なことは上の例でサクッと触れてみましたが、デジタル信号処理において時間もレベルも離散的であると同時に周波数を語ろうとすると、あるデータ取得時間制約をした瞬間にそれも離散的になってしまうということです。
このことはデジタル信号処理によって周波数分析を行おうとすると必ずつきまとうので常に意識しておかなくてはいけません。
イメージ的にはこんな感じでしょうか。
W くん:「やっぱり、、、」
画蔵:「やめろ!」
W くん:「ではマジに聞きますが、サンプリングや量子化は数値的に丸められるというのは理解できるとして、周波数が離散的にしかみえないとどうなります?実際には端数の周波数はあるわけですよね?周波数も丸められるのですか?」
画蔵:「良い質問だ」
前回のスクリプトをいじってやってみます。
clear
N=2000
t=0:1/N:1-1/N
p_shift=int(0/100*N) // 位相をずらす量をパーセントで記入。ここではゼロしか使えません。
fig_axis=[0,1,-2.5,2.5]
fs=2.4 // 端数を入れます。
S_sin(1,1:N)=sin(2*%pi*t*fs) // ここを正弦波にします。
if p_shift<>0 then
Signal(1:p_shift)=S_sin(N-p_shift+1:N)
Signal(p_shift+1:N)=S_sin(1:N-p_shift)
else
Signal=S_sin
end
scf(10);clf;plot(t,Signal)
mtlb_axis(fig_axis)
fmax=20
for f1=1:fmax
x=sin(2*%pi*t*f1) // 正弦波
y=cos(2*%pi*t*f1) // 余弦波
combo_sin=x.*Signal
combo_cos=y.*Signal
sin_level(1,f1)=sum(combo_sin)./N*2
cos_level(1,f1)=sum(combo_cos)./N*2
level(1,f1)=((sin_level(f1))^2+(cos_level(f1))^2)^0.5
end
ft_axis=[0,fmax,-2.0,2.0]
scf(20);clf;plot(1:fmax,level,1:fmax,sin_level,1:fmax,cos_level)
mtlb_axis(ft_axis)
波形です。
周波数成分はこうなりました。
元の周波数を 2.4 Hz という微妙なものにしたため、1 秒の中の波形は完全な周期が含まれていません。
で、周波数成分としては、2 Hz にも 3 Hz にも 4 Hz 以降にも存在し、よく見ると 1 Hz にもいます。これでは分析判断を誤ってしまいそうです。
W くん:「やっぱり、、、」
画蔵:「まあいいから」
LTspice:「いいからって、画蔵の方法が悪いんじゃないの?」
画蔵:「そんなことはない。搭載されている FFT を使っても同じことが起きるのは実は確認してある」
さて、このままではデジタル方式によるスペクトラム分析危うし、です。
ただこのネタはちょっと後回しにする予定です。