Gnuradio中的命名规则和数据类型

一、GNU Radio中的命名规则

1.标识符中的所有单词都用下划线分隔,例如gr_vector_int 

2. GNU Radio包中的所有类型都以gr为前缀,例如gr_float 

3.所有类变量都以d_开头,例如d_min_streams 

4.每个类是在一个单独的文件中实现的,例如,gr_magic类是在gr_magic.cc中用头文件 gr_magic.h 实现的。

5.所有信号处理块的后缀都包含它们的输入和输出类型,例如gr_fft_vcc需要矢量类型的复数输入并给出复数类型的输出。

6.主要类型是float(f),complex(c),short(s),integer(i)。任何类型都可以是矢量化的(v)。

二、GNU Radio中的数据类型

GNU Radio为数据类型的命名创建一套通用的约定。在GNU Radio中定义的特殊数据类型可以在 gr_types.h 和 gr_complex.h 中找到(这两个文件都位于/ usr / local / include中)这些专门的数据类型的列表如下:

Gnuradio中的命名规则和数据类型_第1张图片 

*这些数据类型不过是内置c ++数据类型的新名称

gr_types.h 包含 gr_complex.hvector 和 complex 都是C ++标准库,要查看每种数据类型的大小,可以使用以下

C ++代码

Gnuradio中的命名规则和数据类型_第2张图片

输出将是

sizeof(gr_complex)---- 8 
sizeof(gr_complexd)---- 16 
sizeof(gr_vector_int)---- 12 
sizeof(gr_vector_float)---- 12 
sizeof(gr_vector_double)---- 12 
sizeof (gr_vector_void_star)---- 12 
sizeof(gr_vector_const_void_star)---- 12 
sizeof(gr_int16)---- 2 
sizeof(gr_int32)---- 4 
sizeof(gr_uint16)---- 2 

sizeof(gr_uint32) - --4 

我们可以看到复数类型的大小只是它们基类型的两倍,即gr_complex的大小是8,这是浮点大小的两倍,即4 的gr_complexd大小是16,这是double的大小的两倍,即8 

可以通过打印来查看基本类型和派生类型之间的大小差异。

下面是输出:

sizeof(gr_complex)---- 8 ----- sizeof(float)---- 4 
sizeof(gr_complexd)---- 16 ---- sizeof(double)---- 8 
sizeof(gr_vector_int)---- 12 ---- sizeof(int)---- 4 
sizeof(gr_vector_float)---- 12 ---- sizeof(float)---- 4 
sizeof(gr_vector_double) - --12 ---- sizeof(double)---- 8 
sizeof(gr_vector_void_star)---- 12 ---- sizeof(void *)---- 4 
sizeof(gr_vector_const_void_star)---- 12 - --sizeof(const void *)---- 4 
sizeof(gr_int16)---- 2 ---- sizeof(short)---- 2 
sizeof(gr_int32)---- 4 ---- sizeof( int)---- 4 
sizeof(gr_uint16)---- 2 ---- sizeof(unsigned short)---- 2 

sizeof(gr_uint32)---- 4 ---- sizeof(unsigned int) - --4

*在复类型中,变量的大小是x个字节,那么实部的大小将是x / 2个字节,虚部是相同的。通过以下cpp文件可以看出。 

#include iostream
#include complex
using namespace std;
int main()
{
    complex fc64 ;
    complex fc32 ;
    cout << "sizeof fc64 is " << sizeof(fc64) << endl;
    cout << "sizeof fc32 is " << sizeof(fc32) << endl;
    cout << "sizeof real part of fc64 is " << sizeof(real(fc64)) << endl;
    cout << "sizeof imaginary part of fc32 is " << sizeof(imag(fc32)) << endl;
    return 0;
}

* real()和imag()是cpp操作符,它们在对复数类型数据进行操作时分别返回其实部和虚部

你可能感兴趣的:(USRP/Gnuradio)