入力信号のすべての周波数成分の周波数を,一定の周波数だけシフトするプログラム Frequeency shifter.

Dependencies:   mbed

Committer:
MikamiUitOpen
Date:
Sun Aug 09 00:51:29 2015 +0000
Revision:
2:b83deff26f1f
Parent:
0:f69d3c64978d
3

Who changed what in which revision?

UserRevisionLine numberNew 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