You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GNU Radio自定义OOT块输入输出长度不匹配问题求助

GNU Radio OOT块崩溃与输出长度问题的解决方法

核心问题分析与修复步骤

1. Forecast函数逻辑错误

你的forecast函数当前要求输入项数等于输出项数,但你的块是每100个输入生成32000个输出,需要明确告诉调度器:生成输出至少需要100个输入项。修改如下:

void
testInAndOut_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required)
{
  // 生成32000个输出固定需要100个输入
  ninput_items_required[0] = 100; 
}

2. 输出索引计算错误(导致越界崩溃)

原代码out[j + i * j]的索引逻辑混乱,会导致数组越界或输出顺序错误。正确索引应按i*100 + j填充,保证320组、每组100个数据连续排列:

for (int i = 0; i < 320; i++)
{
  for (int j = 0; j < 100; j++)
  {
    out[i * 100 + j] = sig_data[j];   
  }
}

3. 输入消耗数量错误

当前consume_each(noutput_items)会错误消耗与输出项数相同的输入,但你实际只读取了100个输入项,需明确指定消耗输入流0的100项:

// 替换consume_each(noutput_items)为:
consume(0, 100);

4. 内存释放的大小写错误

原代码delete[] sig_Data;的变量名是sig_data(小写d),大小写不匹配会导致内存泄漏甚至崩溃,修正为:

delete[] sig_data;

5. 输出项数返回值错误

你需要返回实际生成的32000个输出项,而非noutput_items,让调度器正确处理输出:

// 替换return noutput_items;为:
return 32000;

完整修正后的代码片段

void
testInAndOut_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required)
{
  ninput_items_required[0] = 100; 
}

int
testInAndOut_impl::general_work (int noutput_items,
                   gr_vector_int &ninput_items,
                   gr_vector_const_void_star &input_items,
                   gr_vector_void_star &output_items)
{
  const float *in0 = (const float *) input_items[0];
  float *out = (float *) output_items[0];

  float *sig_data = new float[100];       

  // 读取100个输入数据
  for (int i = 0; i < 100; i++)     
  {
    sig_data[i] = in0[i];
  }

  // 生成320组(共32000个)输出数据
  for (int i = 0; i < 320; i++)
  {
    for (int j = 0; j < 100; j++)
    {
      out[i * 100 + j] = sig_data[j];   
    }
  }

  // 消耗100个输入项
  consume(0, 100);
  
  // 释放内存
  delete[] sig_data;

  // 返回实际生成的输出项数
  return 32000;
}

额外说明

  • GNU Radio调度器会根据forecast的要求分配输入缓冲区,确保你能拿到足够的输入项;
  • 若需支持动态输入输出比例,可在forecast中计算所需输入数,比如ninput_items_required[0] = noutput_items / 320;(需处理整除边界);
  • 避免在general_work中频繁使用new/delete,可将内存作为类成员变量预先分配,提升运行性能。

内容的提问来源于stack exchange,提问作者MarkQi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:52:49