チーム15C4

課題名

アベレージフィルタ

研究者名

Yuki Yamashita
Masashi Yoshikawa

概要

初期状態としてLCDに出力してある波が、スイッチを押すたびにアベレージフィルタによって
振幅が変化する様子をディスプレイに表示する。



ソースコード

#include<stdio.h>
#include <math.h>
#include <device.h>
#define N 32

void main()
{
int i;
double average_wave[N];

int initial_wave[N] = {0,4,8,12,16,12,8,4,0,4,8,12,16,12,8,4,0,4,8,12,16,12,8,4,0,4,8,12,16,12,8,4};
LCD_Char_1_Start();
 LCD_Char_1_ClearDisplay();

for(i = 0; i < N; i++){
     average_wave[i] = initial_wave[i];
 }
    

  
 while(1){

  if(SW_Read()){
         for(i = 0; i < N; i++){
             initial_wave[i] = average_wave[i];
         }
        for(i = 0; i < N - 3; i++){
             average_wave[i] = ( initial_wave[i] + initial_wave[i + 1] + initial_wave[i + 2] + initial_wave[i + 3] ) / 4;
         }
         while(SW_Read());
     }
     for(i = 0; i < N; i++)
     {
     LCD_Char_1_DrawVerticalBG(1,i,2,average_wave[i]);
     } 
 }
}





考察

アベレージフィルタをかける度に、グラフが滑らかになり、波が最後的に水平になった。これ以上は変化が起きなくなった。
これは隣り合う値の平均を計算するので、この計算を繰り返す度にそれぞれの値が近くなり、最終的にはどの要素も同じ値になる。
6回フィルタをかけると水平になった。

  • 最終更新:2015-07-13 16:14:20

このWIKIを編集するにはパスワード入力が必要です

認証パスワード