📄 stream_to_vector_decimator.py
字号:
## Copyright 2008 Free Software Foundation, Inc.## This file is part of GNU Radio## GNU Radio is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 3, or (at your option)# any later version.## GNU Radio is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with GNU Radio; see the file COPYING. If not, write to# the Free Software Foundation, Inc., 51 Franklin Street,# Boston, MA 02110-1301, USA.#from gnuradio import grclass stream_to_vector_decimator(gr.hier_block2): """! Convert the stream to a vector, decimate the vector stream to achieve the vector rate. """ def __init__(self, item_size, sample_rate, vec_rate, vec_len): """! Create the block chain. @param item_size the number of bytes per sample @param sample_rate the rate of incoming samples @param vec_rate the rate of outgoing vectors (same units as sample_rate) @param vec_len the length of the outgoing vectors in items """ self._vec_rate = vec_rate self._vec_len = vec_len self._sample_rate = sample_rate gr.hier_block2.__init__(self, "stream_to_vector_decimator", gr.io_signature(1, 1, item_size), # Input signature gr.io_signature(1, 1, item_size*vec_len)) # Output signature s2v = gr.stream_to_vector(item_size, vec_len) self.one_in_n = gr.keep_one_in_n(item_size*vec_len, 1) self._update_decimator() self.connect(self, s2v, self.one_in_n, self) def set_sample_rate(self, sample_rate): """! Set the new sampling rate and update the decimator. @param sample_rate the new rate """ self._sample_rate = sample_rate self._update_decimator() def set_vec_rate(self, vec_rate): """! Set the new vector rate and update the decimator. @param vec_rate the new rate """ self._vec_rate = vec_rate self._update_decimator() def _update_decimator(self): self._decim = max(1, int(self._sample_rate/self._vec_len/self._vec_rate)) self.one_in_n.set_n(self._decim) def sample_rate(self): """! Returns configured sample rate. """ return self._sample_rate def frame_rate(self): """! Returns actual frame rate """ return self._sample_rate/self._vec_len/self._decim
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -