アットウィキロゴ

05 > 29

歩行と歩行間隔


$$frac{1}{2}$$
<math> frac{1}{2}</math>

  • 右足の初期接地
  • 左足の初期接地

一番最初に脚部が床面に接地した音<足音という

  • 歩行間隔の抽出

振幅の変動が明確
振幅の変動が起こる直前

振幅の変動が不明確
周波数の高域成分が現れる直前


  • 結果
条件
個人経時特性 10回の歩行を50分おきに5回
被験者の比較 10回*5度の歩行

それぞれの歩行間隔の平均と標準偏差、左右の差を示す


octaveのコマンド
コマンド 説明
cd **** ****にディレクトリ移動
load('filename.**'); fileを読み込む
load filename.mat .mat,.datのみこの形式でも可
whos どの変数が保存されているか確認
xやyなど 変数を打つとその変数の中身が見れる
ただし音データなどは膨大な量なので見ないほうが吉
plot(変数) 変数をfigureにプロットする
plot(変数,'r') r=red,b=blue,m=magenta,…の色で表示
hold on figureにプロットを重ね続ける

plot(y)
hold on
plot(itai5_r,zeros(1,length(itai5_1)),"or")



fft_y = fft(y);周波数変換
振幅スペクトル
fft_amp = abs(fft_y);
位相スペクトル
fft_ang = angle(fft_y);

ピコって出るノイズ


specgram(y,2048,44100,2048,1024)
スペクトルグラム:*カラーバー

ケプストラム



白板

足音2248点切り出し
フーリエ変換(振幅スペクトル)
10底対数表示
逆フーリエ変換
リフタリング(0づめ)
フーリエ変換


フーリエ変換結果の見方
サンプリング周波数:Fs
FFTへの入力点数:N
FFTの結果(振幅スペクトル):fftsig
fftsigのN点目は
  Fs * (n-1)
                              • [Hz]
      N



x1 = y(itai5_1(1):itai5_1(1)+2047);
x1amp = abs(fft(x1));
x1log = log10(x1amp);

横軸は合わせないといけない
plot(0:Fs/N:Fs-Fs/N,x1log)

x1ifft = ifft(x1log);
plot(real(x1ifft))

左端部分がスペクトル包絡を示している
残り大部分はピッチを表している
緩やかにどう変化しているか

octave:22> itai5_1_l
itai5_1_l =

   26361
   75463
  120903
  165995

octave:23> itai5_1_r
itai5_1_r =

   52614
   98930
  144153
  190116

tmp=x1ifft;
tmp(49:2000)=0;
x1lift = tmp;
x1env(x1lift);
plot(0:Fs/N:Fs-Fs/N,x1log)
hold on
plot(0:Fs/N:Fs-Fs/N,x1env,'r')


   xl1 = y(26361:26361+2047);
xl1fft = fft(xl1);
xl1log = log10(xl1fft);
xl1ifft = ifft(xl1log);
xl1lift = xl1ifft;
xl1lift(49:2000) = 0;
xl1fft2 = fft(xl1lift);
plot(real(xl1fft2))
xlim([0 1024])




   xl1 = y(26361:26361+2047);
xl1fft = fft(xl1);
xl1log = log10(xl1fft);
xl1ifft = ifft(xl1log);
xl1lift = xl1ifft;
xl1lift(49:2000) = 0;
xl1fft2 = fft(xl1lift);
plot(real(xl1fft2))
xlim([0 1024])

   xl2 = y(75463:75463+2047);
xl2fft = fft(xl2);
xl2log = log10(xl2fft);
xl2ifft = ifft(xl2log);
xl2lift = xl2ifft;
xl2lift(49:2000) = 0;
xl2fft2 = fft(xl2lift);
plot(real(xl2fft2))
xlim([0 1024])

   xl3 = y(120903:120903+2047);
xl3fft = fft(xl3);
xl3log = log10(xl3fft);
xl3ifft = ifft(xl3log);
xl3lift = xl3ifft;
xl3lift(49:2000) = 0;
xl3fft2 = fft(xl3lift);
plot(real(xl3fft2))
xlim([0 1024])

   xl4 = y(165995:165995+2047);
xl4fft = fft(xl4);
xl4log = log10(xl4fft);
xl4ifft = ifft(xl4log);
xl4lift = xl4ifft;
xl4lift(49:2000) = 0;
xl4fft2 = fft(xl4lift);
plot(real(xl4fft2))
xlim([0 1024])

   xr1 = y(52614:52614+2047);
xr1fft = fft(xr1);
xr1log = log10(xr1fft);
xr1ifft = ifft(xr1log);
xr1lift = xr1ifft;
xr1lift(49:2000) = 0;
xr1fft2 = fft(xr1lift);
plot(real(xr1fft2))
xlim([0 1024])

   xr2 = y(98930:98930+2047);
xr2fft = fft(xr2);
xr2log = log10(xr2fft);
xr2ifft = ifft(xr2log);
xr2lift = xr2ifft;
xr2lift(49:2000) = 0;
xr2fft2 = fft(xr2lift);
plot(real(xr2fft2))
xlim([0 1024])

   xr3 = y(144153:144153+2047);
xr3fft = fft(xr3);
xr3log = log10(xr3fft);
xr3ifft = ifft(xr3log);
xr3lift = xr3ifft;
xr3lift(49:2000) = 0;
xr3fft2 = fft(xr3lift);
plot(real(xr3fft2))
xlim([0 1024])

   xr4 = y(190116:190116+2047);
xr4fft = fft(xr4);
xr4log = log10(xr4fft);
xr4ifft = ifft(xr4log);
xr4lift = xr4ifft;
xr4lift(49:2000) = 0;
xr4fft2 = fft(xr4lift);
plot(real(xr4fft2))
xlim([0 1024])



Fs =44100;
N=2048;
figure
hold on
plot(0:Fs/N:Fs-Fs/N,real(xl1fft2),'b')
plot(0:Fs/N:Fs-Fs/N,real(xl2fft2),'m')
plot(0:Fs/N:Fs-Fs/N,real(xl3fft2),'c')
plot(real(xl4fft2),'g')
plot(real(xr1fft2),'b')
plot(real(xr2fft2),'r')
plot(real(xr3fft2),'g')
plot(real(xr4fft2),'m')
xlim([0 1024])


Fs =44100;
N=2048;
figure
hold on
plot(0:Fs/N:Fs-Fs/N,real(xl1fft2),'b')
plot(0:Fs/N:Fs-Fs/N,real(xl2fft2),'m')
plot(0:Fs/N:Fs-Fs/N,real(xl3fft2),'c')
plot(0:Fs/N:Fs-Fs/N,real(xl4fft2),'g')
plot(0:Fs/N:Fs-Fs/N,real(xr1fft2),'b')
plot(0:Fs/N:Fs-Fs/N,real(xr2fft2),'r')
plot(0:Fs/N:Fs-Fs/N,real(xr3fft2),'g')
plot(0:Fs/N:Fs-Fs/N,real(xr4fft2),'m')
xlim([1 Fs/2])
最終更新:2014年06月05日 17:48