# 振動解析のためのFFT 複素数表示
# 単振動波形の振幅[zero-peak]の値とFFT結果の振幅表示が同じになるようにする。
# ゼロHz が直流成分の値を示すようにした
# 奇数データ長に対応    2015-05-14

function [ AxFFTamph ] = fft4vib( Timeseries )
    num_of_smpl = size( Timeseries(:,1)  ) * [1 0]'
    smpl_period = ( Timeseries( num_of_smpl) - Timeseries(1,1) )/(num_of_smpl -1 )

Timeseries    
    
    
  # FFT
  FFTcomplex=fft( Timeseries(:,2))/num_of_smpl 

# ゼロシフト(直流分を周波数範囲の中央にもってくる)
  ZsFFTcomplex=fftshift( FFTcomplex ) ;

# 周波数軸設定
  Ax_freq=linspace(-floor(num_of_smpl/2)/(smpl_period*num_of_smpl), (ceil(num_of_smpl/2)-1)/(smpl_period*num_of_smpl), num_of_smpl)

# 周波数軸を含むFFT行列 
  AxFFTcomplex=[Ax_freq.' ZsFFTcomplex]

# 等価振幅と位相のFFT行列
  AxFFTamph=[  AxFFTcomplex((floor(num_of_smpl/2)+1):num_of_smpl,1) ...
               AxFFTcomplex((floor(num_of_smpl/2)+1):num_of_smpl,2)*2 ...
            ];
            
  AxFFTamph(1,:)=[ AxFFTcomplex((floor(num_of_smpl/2)+1),1) ...
                   AxFFTcomplex((floor(num_of_smpl/2)+1),2) ...
                 ];

endfunction
