开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux/OSX
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
GNURAdio
问题(Question):
我目前卡在这个网页范例 http://tinyurl.com/ofpb85p 从53 ~ 62行
根据这个范例 我写了如下
vblock_impl::work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
const float *in = (const float *) input_items[0];
float *out = (float *) output_items[0];
int ninputs = input_items.size();
//for (int i = 0; i < p_vlen; i++)
for (int i = 0; i < noutput_items*p_vlen; i++)
{
int acc = ((float *) input_items[0])[i];
for (int j=1; j < ninputs; j++)
acc += ((float *) input_items[j])[i];
out[i]= (float) acc + out[i];
//我想用阵列方式来写 但上方这行可能有错
}
上面程式可能有许多错误 我主要问题是input_items和output_items看起来是
array 但是要提取里面element值 不断要透过 (float *)指标去做型态转换
这原因是为何? 这之间的相关性 搞得不是很懂 为何不能直接input_items[0][i]
这类直接做? 以及为何会有((float *) input_items[j])[i] 这种先一个维度型态转变
然后再提取? 为何不能先整体型态转换 (float*) input_items[j][i] 再一起提取?
另外这个vector性质array 所读出的size 无法知道array总共有多少size
或者说 我该如何知道output_items 是几维阵列? input_items.size()只会返回
其中一维的长度 但另外一维度我感觉是完全未知
希望版上大大能大概给个方向指引 谢谢囉