Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェアラジオとC++ そしてFMエアチェックのための信号解析と数値計算にまつわるよもやま話 / Software radio and C++

ソフトウェアラジオとC++ そしてFMエアチェックのための信号解析と数値計算にまつわるよもやま話 / Software radio and C++

A presentation for Kichijoji.pm 20, Freakout Holdings, Inc., Minato-ku, Tokyo, Japan, 22-NOV-2019

Kenji Rikitake

November 22, 2019
Tweet

More Decks by Kenji Rikitake

Other Decks in Technology

Transcript

  1. Kenji Rikitake Γ͖͚ͨ ͚Μ͡ ྗ෢ ݈࣍ 22-NOV-2019 kichijoji.pm 20 Freakout

    Holdings, Inc. Minato-ku, Tokyo, Japan @jj1bdx Kenji Rikitake / Kichijoji.pm 20 2
  2. IQ৴߸ͩͱԿ͕͏Ε͍͔͠ IQ৴߸: std::complex<float> IQsample ͱͯ͠ఆٛ ৴߸ͷৼ෯ ͸ std::abs(IQsample) ৴߸ͷҐ૬ ͸

    std::arg(IQsample) std::arg(z) = std::atan2(z.imag(), z.real()) AM์ૹͳΒ ͦͷ΋ͷɺFM์ૹͳΒ Λඍ෼͢Ε͹෮ௐͰ͖Δ Kenji Rikitake / Kichijoji.pm 20 11
  3. ٯԋࢉͷͨΊͷFIRϑΟϧλ (airspy-fmradion) using IQSample = std::complex<float>; using IQSampleVector = std::vector<IQSample>;

    inline IQSample MultipathFilter::single_process(const IQSample filter_input) { m_state.emplace_back(filter_input); m_state.erase(m_state.begin()); IQSample output = IQSample(0, 0); // for (unsigned int i = 0; i < m_filter_order; i++) { // output += m_state[i] * m_coeff[i]; // } volk_32fc_x2_dot_prod_32fc(&output, m_state.data(), m_coeff.data(), m_filter_order); return output; } Kenji Rikitake / Kichijoji.pm 20 18