編集中のプログラムです。 一時的にパブリッシュしました。 タッチパネル部分は未確認です。 It is a program while editing it. To pass it to the person, it shared.
filters.cpp@1:9869086496f6, 2011-09-29 (annotated)
- Committer:
- jksoft
- Date:
- Thu Sep 29 00:55:26 2011 +0000
- Revision:
- 1:9869086496f6
- Parent:
- 0:f5f8e3417215
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jksoft | 0:f5f8e3417215 | 1 | |
jksoft | 0:f5f8e3417215 | 2 | #include <string.h> |
jksoft | 0:f5f8e3417215 | 3 | #include "filters.h" |
jksoft | 0:f5f8e3417215 | 4 | |
jksoft | 0:f5f8e3417215 | 5 | |
jksoft | 0:f5f8e3417215 | 6 | void FilterBoxF::initialise(unsigned int size) |
jksoft | 0:f5f8e3417215 | 7 | { |
jksoft | 0:f5f8e3417215 | 8 | m_size = size; |
jksoft | 0:f5f8e3417215 | 9 | if (m_size>FILTER_MAX_SIZE) m_size = FILTER_MAX_SIZE; |
jksoft | 0:f5f8e3417215 | 10 | memset(m_history,0,sizeof(float)*FILTER_MAX_SIZE); |
jksoft | 0:f5f8e3417215 | 11 | m_index = 0; |
jksoft | 0:f5f8e3417215 | 12 | m_out = 0; |
jksoft | 0:f5f8e3417215 | 13 | } |
jksoft | 0:f5f8e3417215 | 14 | |
jksoft | 0:f5f8e3417215 | 15 | |
jksoft | 0:f5f8e3417215 | 16 | float FilterBoxF::tick(float in) |
jksoft | 0:f5f8e3417215 | 17 | { |
jksoft | 0:f5f8e3417215 | 18 | m_history[m_index] = in; |
jksoft | 0:f5f8e3417215 | 19 | m_index += 1; |
jksoft | 0:f5f8e3417215 | 20 | if (m_index>=m_size) m_index = 0; |
jksoft | 0:f5f8e3417215 | 21 | |
jksoft | 0:f5f8e3417215 | 22 | float sum = 0; |
jksoft | 0:f5f8e3417215 | 23 | |
jksoft | 0:f5f8e3417215 | 24 | for (int i=0; i<m_size; i++) |
jksoft | 0:f5f8e3417215 | 25 | { |
jksoft | 0:f5f8e3417215 | 26 | sum += m_history[i]; |
jksoft | 0:f5f8e3417215 | 27 | } |
jksoft | 0:f5f8e3417215 | 28 | m_out = sum/m_size; |
jksoft | 0:f5f8e3417215 | 29 | |
jksoft | 0:f5f8e3417215 | 30 | return m_out; |
jksoft | 0:f5f8e3417215 | 31 | } |
jksoft | 0:f5f8e3417215 | 32 | |
jksoft | 0:f5f8e3417215 | 33 | //================================= |
jksoft | 0:f5f8e3417215 | 34 | |
jksoft | 0:f5f8e3417215 | 35 | void FilterBoxI::initialise(unsigned int size) |
jksoft | 0:f5f8e3417215 | 36 | { |
jksoft | 0:f5f8e3417215 | 37 | m_size = size; |
jksoft | 0:f5f8e3417215 | 38 | if (m_size>FILTER_MAX_SIZE) m_size = FILTER_MAX_SIZE; |
jksoft | 0:f5f8e3417215 | 39 | memset(m_history,0,sizeof(int)*FILTER_MAX_SIZE); |
jksoft | 0:f5f8e3417215 | 40 | m_index = 0; |
jksoft | 0:f5f8e3417215 | 41 | m_out = 0; |
jksoft | 0:f5f8e3417215 | 42 | } |
jksoft | 0:f5f8e3417215 | 43 | |
jksoft | 0:f5f8e3417215 | 44 | |
jksoft | 0:f5f8e3417215 | 45 | int FilterBoxI::tick(int in) |
jksoft | 0:f5f8e3417215 | 46 | { |
jksoft | 0:f5f8e3417215 | 47 | m_history[m_index] = in; |
jksoft | 0:f5f8e3417215 | 48 | m_index += 1; |
jksoft | 0:f5f8e3417215 | 49 | if (m_index>=m_size) m_index = 0; |
jksoft | 0:f5f8e3417215 | 50 | |
jksoft | 0:f5f8e3417215 | 51 | int sum = 0; |
jksoft | 0:f5f8e3417215 | 52 | for (int i=0; i<m_size; i++) |
jksoft | 0:f5f8e3417215 | 53 | { |
jksoft | 0:f5f8e3417215 | 54 | sum += m_history[i]; |
jksoft | 0:f5f8e3417215 | 55 | } |
jksoft | 0:f5f8e3417215 | 56 | m_out = sum/m_size; |
jksoft | 0:f5f8e3417215 | 57 | return m_out; |
jksoft | 0:f5f8e3417215 | 58 | } |
jksoft | 0:f5f8e3417215 | 59 | |
jksoft | 0:f5f8e3417215 | 60 | //================================= |
jksoft | 0:f5f8e3417215 | 61 | |
jksoft | 0:f5f8e3417215 | 62 | void FilterIirI::initialise(int tau, int limit) |
jksoft | 0:f5f8e3417215 | 63 | { |
jksoft | 0:f5f8e3417215 | 64 | m_tau = tau; |
jksoft | 0:f5f8e3417215 | 65 | m_limit = limit; |
jksoft | 0:f5f8e3417215 | 66 | m_remainder = 0; |
jksoft | 0:f5f8e3417215 | 67 | m_out = 0; |
jksoft | 0:f5f8e3417215 | 68 | } |
jksoft | 0:f5f8e3417215 | 69 | |
jksoft | 0:f5f8e3417215 | 70 | |
jksoft | 0:f5f8e3417215 | 71 | int FilterIirI::tick(int in) |
jksoft | 0:f5f8e3417215 | 72 | { |
jksoft | 0:f5f8e3417215 | 73 | int temp = in - m_out + m_remainder; |
jksoft | 0:f5f8e3417215 | 74 | m_remainder = temp % m_tau; |
jksoft | 0:f5f8e3417215 | 75 | m_out += temp / m_tau; |
jksoft | 0:f5f8e3417215 | 76 | if (m_out>m_limit) m_out = m_limit; |
jksoft | 0:f5f8e3417215 | 77 | if (m_out<-m_limit) m_out = -m_limit; |
jksoft | 0:f5f8e3417215 | 78 | return m_out; |
jksoft | 0:f5f8e3417215 | 79 | } |