动态更改输出项的数量
Change the number of output items dynamically
在gr块的work()函数中,是否可以动态更改输出项的数量,从而保留相同数量的输入项?
在我的情况下,我需要两个基于条件的案例:1) 4096英寸:0英寸2) 4096输入:4096输出
感谢
是的,您希望您的块继承自gr::block
(而不是更常见的sync_block
等),并使用general_work
来处理样本。
在general_work
中,您可以调用this->consume()
来报告要从输入缓冲区中丢弃的样本数量,return [int]
将动态地告诉调度程序这次要传递给下一个块的样本数量。
https://gnuradio.org/redmine/projects/gnuradio/wiki/BlocksCodingGuide#Basic-阻止
这是他们在wiki上的代码示例,不过请注意,这个示例的编码风格与gnuradio块当前的编码方式并不完全匹配,但它为您提供了如何使用general_work
的想法。对于最新的示例,我建议关闭gnuradio源并为general_work
:进行grepping
#include <gr_block.h>
class my_basic_block : public gr_block
{
public:
my_basic_adder_block(...):
gr_block("another adder block",
in_sig,
out_sig)
{
//constructor stuff
}
int general_work(int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
//cast buffers
const float* in0 = reinterpret_cast<const float *>(input_items[0]);
const float* in1 = reinterpret_cast<const float *>(input_items[1]);
float* out = reinterpret_cast<float *>(output_items[0]);
//process data
for(size_t i = 0; i < noutput_items; i++) {
out[i] = in0[i] + in1[i];
}
//consume the inputs
this->consume(0, noutput_items); //consume port 0 input
this->consume(1, noutput_items); //consume port 1 input
//this->consume_each(noutput_items); //or shortcut to consume on all inputs
//return produced
return noutput_items;
}
};
相关文章:
- 输出没有重复元素的动态数组(收缩数组)C++
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 这种动态调整数组大小的尝试的输出有什么问题
- 动态分配的数组在输出时丢失 ifstream 数据
- 动态分配的输入,并在C 中输出2D阵列
- 创建一个动态数组,包括汽车的年份和品牌,但无法保存我的第一个输出
- 假设动态范围,以下C++程序的输出是什么
- 在泰勒级数展开中动态表示负输出 --> C++
- 从函数指针输出动态数组
- 使用指针动态数组同时输出整数值列表
- 分段错误:11(C++文件输入和输出、类和动态数组)
- 如何在神经网络中动态设置输入/输出的数量和行为
- 动态初始化的 2D 数组输出错误
- 如何在c++中从容器数组中输出动态数组值
- 动态更改输出项的数量
- 创建动态循环队列,元素输出正常,但程序崩溃
- 在c++中打印动态创建的负数会导致不正确的输出
- 将.txt文件中的字符串输出到成员方法局部作用域之外的动态数组
- 输出动态数组或矩阵的元素