C语言-OFDM过采样获得中频IF信号

仿真ADC那里写了过采样的原理: 利用实信号的傅里叶变换是共轭对称, 反之:共轭对称的复信号做反傅里叶变换是实信号这个性质;

所以基本过程如下:
在这里插入图片描述
这样子获取的OFDM信号就是实信号了!!

代码如下(没抓虫,可能有bug,当伪代码先写着):

#include "const.h"
#include "complex.h"

//Complex modulated_signal[POINT_N], transmitted_signal[OFDM_N];
//POINT_N代表OFDM的subcarriers中,携带data的subcarriers的数量; OFDM_N代表所有subcarriers数量 
//用过采样原理对调制信号在频域上做IFFT,获得高频的OFDM信号 
void OFDM_GI (Complex (*modulated_signal),  *transmitted_signal)
{
    
    
	double OFDM_signal[1024];
    Complex FFT_signal[1024];//1024个subcarriers(FFT信号),其中64*2个会搭载data 
    //初始化
	for(int i=0; i<1024; i++){
    
    
		FFT_signal[i]=0;
	} 
    overSampling(modulated_signal, OFDM_signal);
    addGI(OFDM_signal, transmitted_signal);
}

void overSampling (Complex (*modulated_signal), Complex (*OFDM_signal))
{
    
    
    Complex conjugate_signal[POINT_N];
    
    // obtain conjugate(s)
    for (int j = 0; j < POINT_N; j++)
    {
    
    
        conjugate_signal[j].real = modulated_signal[j].real;
        conjugate_signal[j].image = -modulated_signal[j].image;

    }
	
	//	overSampling
    for (int k = 0; k < POINT_N; k++)
    {
    
    
    	FFT_signal[k+100] = modulated_signal[k];
    	FFT_signal[-k+100] = conjugate_signal[k];
	}
	
	//	IFFT
	for (int k = 0; k < POINT_N; k++)
    {
    
    
    	for (int n = 0; n < 1024; n++)
    	{
    
    
		    current_signal[k].real = 1 / sqrt(1024) * ComplexMulti(FFT_signal[n], Exp(2 * PI * k * n / 1024)).real;
		    current_signal[k].image = 1 / sqrt(1024) * ComplexMulti(FFT_signal[n], Exp(2 * PI * k * n / 1024)).image;
		
		    OFDM_signal[k].real = OFDM_signal[k].real + current_signal[k].real;
		    OFDM_signal[k].image = OFDM_signal[k].image + current_signal[k].image;
    	}
	}
    
    
}

void addGI(*OFDM_signal, *transmitted_signal)
{
    
    
	int n;
	for (n = 0; n < GI; n++)
    {
    
    
        transmitted_signal[n] = OFDM_signal[n + GI*3];
    }
    for (n = GI; n < OFDM_N; n++)
    {
    
    
        transmitted_signal[n] = OFDM_signal[n - GI];
    }
}

おすすめ

転載: blog.csdn.net/Fky_mie/article/details/116265937