⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upsampling.c

📁 详细的OFDM设计过程
💻 C
字号:
//#include <stdio.h>
//#include "upsampling.h"

void upsampling( short *out, const float *in,  int input_size, int upfactor) {

	int i ;
	int k ;

	for (i=0;i<input_size;i++){

		for (k=0;k<upfactor;k++) {

			out[2*((i*upfactor)+k)]= (short)(32767*in[i]);
			out[2*((i*upfactor)+k)+1]= (short)(-32767*in[i]);
		
		}

	}
}

//function that add zeros betzeen symbols, and zeros at the beginning and at the end
void upsampling2(const float *in, float *out,
 const int input_size, const int upfactor) {
	
	int i ;
	memset((void *)out, 0, (input_size*upfactor+160)*sizeof(float));
		
	//for(i=0;i<(input_size*upfactor)+160;i++){out[i]=0;}
	for (i=0;i<input_size;i++){
		
		out[i*upfactor+80]=in[i];
		
	}
}

// in should have downfactor more values than out. output_size defines the size of out.
void downsampling(short *out, short *in,  short output_size, short downfactor) 
{
	short i;
	for (i=0; i<output_size; i++)
	{
			// Take value 3 and 4, of 5 values, and take the mean. 
			out[i] = ((in[i*downfactor+1]+in[i*downfactor+2])>>2);  
			//out[i] _avg2(in[i*downfactor+2], in[i*downfactor+3]);
	}
}

//function that add zeros betzeen symbols, and zeros at the beginning and at the end
void upsampling3(const float *in, float *out,
 const int input_size, const int upfactor) {
	
	int i ;
	memset((void *)out, 0, (input_size*upfactor+80)*sizeof(float));
		
	//for(i=0;i<(input_size*upfactor)+160;i++){out[i]=0;}
	for (i=0;i<input_size;i++){
		
		out[i*upfactor+40]=in[i];
		
	}
}

// in should have downfactor more values than out. output_size defines the size of out.
void downsampling2(short *out, short *in,  short output_size, short downfactor) 
{
	short i;
	for (i=0; i<output_size; i++)
	{
			// Take value 3 and 4, of 5 values, and take the mean. 
			out[i] = ((in[i*downfactor]+in[i*downfactor+1])>>2);  
			//out[i] _avg2(in[i*downfactor+2], in[i*downfactor+3]);
	}
}

/*
void main(){
	int i;
	int j;
	float output[OUTBUFFSIZE];
	float input[] = {1,2,3,4,5,6,7,8,9,10};
	upsampling(input, output, input_size);
	
	for(j=0;j<input_size;j++){
		printf("%f \n",input[j]);
	}
	for(i=0; i<output_size; i++){
		printf("%f \n",output[i]);
}
	}
		
*/		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -