不韋 呂
/
OpenCampus_FreqConv
入力信号のすべての周波数成分の周波数を,一定の周波数だけシフトするプログラム Frequeency shifter.
FrequencyConverter/FrequencyConverter.hpp@2:b83deff26f1f, 2015-08-09 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sun Aug 09 00:51:29 2015 +0000
- Revision:
- 2:b83deff26f1f
- Parent:
- 0:f69d3c64978d
3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:f69d3c64978d | 1 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:f69d3c64978d | 2 | // Frequency converter system class |
MikamiUitOpen | 0:f69d3c64978d | 3 | // Copyright (c) 2014 MIKAMI, Naoki, 2014/07/20 |
MikamiUitOpen | 0:f69d3c64978d | 4 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:f69d3c64978d | 5 | |
MikamiUitOpen | 0:f69d3c64978d | 6 | #ifndef FREQUENCYCONVERTER_HPP |
MikamiUitOpen | 0:f69d3c64978d | 7 | #define FREQUENCYCONVERTER_HPP |
MikamiUitOpen | 0:f69d3c64978d | 8 | |
MikamiUitOpen | 0:f69d3c64978d | 9 | #include "mbed.h" |
MikamiUitOpen | 0:f69d3c64978d | 10 | #include "HilbertTransform.hpp" |
MikamiUitOpen | 0:f69d3c64978d | 11 | #include "coefsHilbert94.hpp" |
MikamiUitOpen | 0:f69d3c64978d | 12 | #include "DC_Cut_Coefficients.hpp" |
MikamiUitOpen | 0:f69d3c64978d | 13 | #include "TwoPhaseGenerator.hpp" |
MikamiUitOpen | 0:f69d3c64978d | 14 | |
MikamiUitOpen | 0:f69d3c64978d | 15 | namespace Mikami |
MikamiUitOpen | 0:f69d3c64978d | 16 | { |
MikamiUitOpen | 0:f69d3c64978d | 17 | class FrqConvSystem |
MikamiUitOpen | 0:f69d3c64978d | 18 | { |
MikamiUitOpen | 0:f69d3c64978d | 19 | private: |
MikamiUitOpen | 0:f69d3c64978d | 20 | Hilbert<ORDER_> ht_; |
MikamiUitOpen | 0:f69d3c64978d | 21 | Biquad DcCut_; // DC cut filter |
MikamiUitOpen | 0:f69d3c64978d | 22 | TwoPhaseGenerator sinCos_; // 100.0 Hz |
MikamiUitOpen | 0:f69d3c64978d | 23 | public: |
MikamiUitOpen | 0:f69d3c64978d | 24 | FrqConvSystem(float fC, float fS) |
MikamiUitOpen | 0:f69d3c64978d | 25 | : ht_(hm_), DcCut_(cDccut_), sinCos_(fC, fS) {} |
MikamiUitOpen | 0:f69d3c64978d | 26 | float Execute(float x) |
MikamiUitOpen | 0:f69d3c64978d | 27 | { |
MikamiUitOpen | 0:f69d3c64978d | 28 | float yI, yQ, cosx, sinx; |
MikamiUitOpen | 0:f69d3c64978d | 29 | |
MikamiUitOpen | 0:f69d3c64978d | 30 | float xn = x; |
MikamiUitOpen | 0:f69d3c64978d | 31 | xn = DcCut_.Execute(gDccut_*x); // DC cut |
MikamiUitOpen | 0:f69d3c64978d | 32 | ht_.Execute(xn, yI, yQ); // Hilbert transform |
MikamiUitOpen | 0:f69d3c64978d | 33 | sinCos_.Generate(cosx, sinx); // cos and sin generator |
MikamiUitOpen | 0:f69d3c64978d | 34 | float yn = yI*cosx - yQ*sinx; // conversion |
MikamiUitOpen | 0:f69d3c64978d | 35 | return yn; |
MikamiUitOpen | 0:f69d3c64978d | 36 | }; |
MikamiUitOpen | 0:f69d3c64978d | 37 | }; |
MikamiUitOpen | 0:f69d3c64978d | 38 | } |
MikamiUitOpen | 0:f69d3c64978d | 39 | #endif // FREQUENCYCONVERTER_HPP |
MikamiUitOpen | 0:f69d3c64978d | 40 |