警告:数组初始化程序中的多余元素 [英] Warning: excess elements in array initializer

查看:116
本文介绍了警告:数组初始化程序中的多余元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





当我运行代码时,我收到以下错误消息。



[代码]

Hi,

While i am running the code, i am getting following error messages.

[CODE]

#include <stdio.h>
#include <math.h>
 
#define COL 204
#define COL_P 2
#define ROWS_P 1020
 
int codecheck(int col,int col_p,int rows_p,int (*h)[2],int x[])
{	int i,j,m,f; //flags
	int sum = 0;
	int y[COL];
	
	for (i=0;i<COL;i++)
	y[i]=0;
	m=1;
	f=-1;
	for(i=0;i<rows_p;)							 
	{			
		for(j=0;j<rows_p;j++)
		{
			if(h[j][0]==m)
			{		
				y[m]=y[m] + x[h[j][1]-1];
					f++;
			}
		}
		y[m]=y[m]%2;
		m=m+1;
		i=f+1;
	}
 
	for (i = 0; i < COL; ++i) 
		{
			sum =sum+ y[i];
		}
	if (sum == 0) 
		{
			return 1;
		}
	else
		{	
			return -1;
		}
				
}
 
int codesum (int y[],int col)
{
    int sum=0;
    for(int i=0;i<COL;i++)
        sum+=y[i];
    //cout<< "sum="<< sum<<endl;
    if(sum>0)
        return 0;
    else
        return 1;
}



void ModulationSchemeValues (int modulationScheme, int noOfSymbols, double var, float d, int col, float rate, double snr)
{
	            switch (modulationScheme)
            {
                case 0:
                    //cout<<"case 0"<<endl;
                    var=1/(2*rate*snr);
                    noOfSymbols = col;
                    d=1;
                    break;
                case 1:
                    //cout<<"case 1"<<endl;
                    var=1/(4*rate*snr);
                    noOfSymbols = col/2;
                    d=1/sqrt(2);
                    break;
                case 2:
                    //cout<<"case 2"<<endl;
                    var=1/(8*rate*snr);
                    noOfSymbols = col/4;
                    d=1/sqrt(10);
                default:
                    var=1/(2*rate*snr);
                    noOfSymbols = col;
                    d=1;
                    break;
            }
}

void InitializeChannelLLR (double var, int modulationScheme, int noOfSymbols, float x[], float noise[], double L_ch[], float d, int rows_p, int (*h)[2], double LLR[])
{
    
    int j=0;   // temporary flags
   int k=0,t;
    for(int i=0;i<noOfSymbols;i++)							// using randnoise function introducing noise to all zero codeword
    {
        
            x[j]=d;
            noise[j]=(x[j])+0.8;
            L_ch[j]= 2*noise[j]/var;
            j++;
       
        
    }

    
    for(int j=0;j<rows_p;j++)
    {
        //cout<<"enter loop"<<endl;
        //cout<< "j="<<j<<endl;  //<<j<<"\t";
        t=h[j][1]-1;
        LLR[j]=L_ch[t];
    }
    //cout<<"L_ch initialize done \n";

}
 
 
void SPADecoder(int rows_p, double LLR[], int (*h)[2], double LLR_ret[], double L_ch[],  double L_dec[], int y[], int z, int col)
{
    double temp;
	int col_p;
    int i,j,k;
    for(i=0;i<rows_p;i++)
    {
        temp=1;
        for(j=0;j<rows_p;j++)
        {
            if(j!=i && h[j][0]==h[i][0])
            {
                temp=temp * tanhf(LLR[j]/2);
            }
        }
								
								
        LLR_ret[i] = log((1 + temp)/(1 - temp));     // lower and upper bounding the LLR
								
        if(LLR_ret[i] > 40)
        {
            LLR_ret[i]=40;
        }
        else if(LLR_ret[i]<-40)
        {
            LLR_ret[i]=-40;
        }
        
    }
    
    for(i=0;i<COL;i++)							// L_dec array used to decide the value of each bit of codeword here it is initalized to LLr value received from channel
    {
        L_dec[i]=L_ch[i];
    }
    
    
    for(i=1;i<col+1;i++)						// LLR values received by the variable nodes are added and stored in L_dec for decision making
    {
        for(j=0;j<rows_p;j++)
        {
            if(h[j][1]==i)
            {
                L_dec[i-1]=L_dec[i-1]+LLR_ret[j];
            }
            
        }
        
        if(L_dec[i-1]<=0)						// decision about the bit values of the received codeword is done her and stored in Y.
        {
            y[i-1]=1;
        }
        else
        {
            y[i-1]=0;
        }
        
    }
    
    
    //z = codesum(y,col);
    z=codecheck(col, col_p,rows_p,h,y); // checking whether the decoded codeword is all zero or not
    
    if(z==1)								// if decoded perfectly exit the deoding loop
    {
        return ;
    }
    // updating LLR values on variable nodes side for each variable and check node
    for(i=0;i<rows_p;i++)
    {
        temp=0;
        for(j=0;j<rows_p;j++)
        {
            if(j!=i && h[j][1]==h[i][1])
            {
                temp=temp + LLR_ret[j];
                k=h[i][1];
                
            }
        }
        LLR[i] = temp+L_ch[k-1];
    }
 
}
 
int main()
{
    
    
	// flags and counters
int z,i,j,N,k,ber_count,looping,t,sum;
    float d=1;
	float rate=0.5;
	int rows_p,col_p;
	int col,y[col],maxTransmissions=20,decoderIterations=10,maxErrors=100,errorsAccumulated=0;			// iterations gives the maximum number of time the decoder is run for each value of SNR
//	 printf("enter number of rows in the txt file being given as input\n");
//	 scanf("%d",&rows_p);
 
//	 printf("\n enter number of columns \n");
//	 scanf("%d",&col);
//	int *y=(int*) calloc (col,sizeof(int));	 //the decoded codeword will be saved here.
    
//	float *x=(float*) calloc (col,sizeof(float));
//	double *noise=(double*) calloc (col,sizeof(double));		// noise array is noise added to all zero codeword.
	//double noise[]={1.1,0.9,-0.1,1.1,-1.1,0.9}		;
    
	double var,snr;
	double temp; 								//temp variable
    
//	double *L_ch=(double*) calloc (col,sizeof(double));			//holds LLR values given by the channel
//	double *L_dec=(double*) calloc (col,sizeof(double));
    
    float noise[col];  // "x" will be used as a codeword and "y" is received codeword.
    double L_ch[col],L_dec[col];    //holds LLR values given by the channel
	double LLR[rows_p],LLR_ret[rows_p];					//hold updated LLR values at variable node and check node respectively
	double BER[11];												// BER array one for each SNR as SNR is varied from 0-10 in steps of 1
    float snr_db[]={0,1,2,3,4};
    int snr_range=5,snr_count;
	int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
    int  ret,row=0;
	double error_bits,error;
    // Set Field Separator here

    int modulationScheme = 0,noOfSymbols;
    
int h[ROWS_P][COL_P]={{1,1},{1,18},{1,27},{1,82},{1,102},{1,103},{1,130},{1,177},{1,190},{1,203},{2,2},{2,15},{2,75},{2,80},{2,86},{2,104},{2,121},{2,141},{2,144},{2,191},{3,3},{3,31},{3,32},{3,42},{3,101},{3,105},{3,153},{3,159},{3,178},{3,199},{4,4},{4,37},{4,71},{4,75},{4,85},{4,106},{4,111},{4,114},{4,127},{4,164},{5,5},{5,17},{5,42},{5,72},{5,87},{5,107},{5,141},{5,158},{5,193},{5,197},{6,4},{6,6},{6,17},{6,78},{6,102},{6,108},{6,162},{6,165},{6,167},{6,174},{7,7},{7,23},{7,73},{7,80},{7,83},{7,109},{7,118},{7,168},{7,177},{7,178},{8,8},{8,33},{8,37},{8,73},{8,100},{8,110},{8,156},{8,173},{8,192},{8,197},{9,9},{9,40},{9,41},{9,88},{9,92},{9,103},{9,111},{9,173},{9,181},{9,199},{10,10},{10,14},{10,23},{10,53},{10,93},{10,107},{10,112},{10,137},{10,167},{10,175},{11,11},{11,19},{11,26},{11,28},{11,88},{11,110},{11,113},{11,116},{11,170},{11,191},{12,1},{12,12},{12,25},{12,86},{12,97},{12,108},{12,114},{12,124},{12,161},{12,192},{13,4},{13,13},{13,33},{13,34},{13,50},{13,115},{13,137},{13,140},{13,146},{13,160},{14,14},{14,31},{14,40},{14,58},{14,95},{14,116},{14,121},{14,166},{14,174},{14,203},{15,15},{15,68},{15,70},{15,87},{15,101},{15,109},{15,113},{15,117},{15,165},{15,180},{16,4},{16,16},{16,59},{16,67},{16,92},{16,118},{16,125},{16,131},{16,138},{16,151},{17,15},{17,17},{17,44},{17,71},{17,73},{17,119},{17,161},{17,190},{17,194},{17,198},{18,18},{18,47},{18,62},{18,85},{18,93},{18,120},{18,122},{18,125},{18,146},{18,181},{19,19},{19,22},{19,23},{19,37},{19,57},{19,121},{19,126},{19,130},{19,131},{19,143},{20,1},{20,20},{20,50},{20,51},{20,99},{20,106},{20,122},{20,169},{20,179},{20,200},{21,21},{21,32},{21,62},{21,72},{21,98},{21,123},{21,126},{21,154},{21,168},{21,204},{22,22},{22,31},{22,44},{22,89},{22,98},{22,124},{22,141},{22,160},{22,169},{22,176},{23,23},{23,32},{23,61},{23,65},{23,99},{23,125},{23,132},{23,133},{23,147},{23,152},{24,16},{24,24},{24,42},{24,73},{24,77},{24,126},{24,142},{24,145},{24,146},{24,147},{25,5},{25,24},{25,25},{25,55},{25,67},{25,127},{25,133},{25,165},{25,178},{25,185},{26,10},{26,26},{26,27},{26,40},{26,85},{26,128},{26,147},{26,155},{26,160},{26,200},{27,22},{27,27},{27,42},{27,50},{27,74},{27,108},{27,129},{27,154},{27,170},{27,195},{28,2},{28,28},{28,63},{28,67},{28,94},{28,130},{28,150},{28,171},{28,187},{28,192},{29,29},{29,48},{29,69},{29,79},{29,90},{29,116},{29,131},{29,159},{29,176},{29,200},{30,7},{30,30},{30,53},{30,58},{30,94},{30,127},{30,132},{30,140},{30,162},{30,189},{31,29},{31,31},{31,64},{31,77},{31,94},{31,117},{31,133},{31,167},{31,183},{31,190},{32,20},{32,30},{32,32},{32,74},{32,78},{32,115},{32,134},{32,151},{32,181},{32,194},{33,11},{33,33},{33,47},{33,76},{33,81},{33,109},{33,135},{33,154},{33,155},{33,179},{34,2},{34,7},{34,34},{34,71},{34,76},{34,136},{34,138},{34,159},{34,182},{34,183},{35,27},{35,29},{35,35},{35,60},{35,86},{35,123},{35,137},{35,149},{35,166},{35,189},{36,17},{36,35},{36,36},{36,48},{36,100},{36,138},{36,139},{36,146},{36,163},{36,168},{37,5},{37,34},{37,37},{37,38},{37,69},{37,117},{37,139},{37,145},{37,169},{37,203},{38,38},{38,56},{38,76},{38,92},{38,101},{38,106},{38,123},{38,140},{38,161},{38,170},{39,39},{39,41},{39,60},{39,76},{39,78},{39,125},{39,141},{39,142},{39,175},{39,198},{40,2},{40,35},{40,40},{40,43},{40,93},{40,114},{40,135},{40,142},{40,148},{40,158},{41,1},{41,2},{41,13},{41,41},{41,59},{41,109},{41,119},{41,132},{41,143},{41,157},{42,11},{42,42},{42,43},{42,92},{42,95},{42,115},{42,117},{42,144},{42,156},{42,204},{43,7},{43,9},{43,43},{43,45},{43,56},{43,122},{43,145},{43,192},{43,194},{43,201},{44,10},{44,44},{44,75},{44,83},{44,95},{44,110},{44,135},{44,146},{44,157},{44,180},{45,45},{45,63},{45,79},{45,81},{45,97},{45,127},{45,139},{45,147},{45,148},{45,195},{46,34},{46,46},{46,61},{46,66},{46,77},{46,105},{46,144},{46,148},{46,197},{46,201},{47,14},{47,20},{47,46},{47,47},{47,83},{47,124},{47,128},{47,132},{47,149},{47,159},{48,8},{48,13},{48,26},{48,48},{48,62},{48,149},{48,150},{48,174},{48,193},{48,195},{49,15},{49,21},{49,25},{49,49},{49,51},{49,145},{49,149},{49,151},{49,177},{49,188},{50,8},{50,49},{50,50},{50,54},{50,89},{50,105},{50,126},{50,152},{50,164},{50,165},{51,43},{51,51},{51,66},{51,68},{51,91},{51,131},{51,133},{51,153},{51,187},{51,189},{52,1},{52,39},{52,45},{52,52},{52,54},{52,110},{52,140},{52,150},{52,154},{52,163},{53,8},{53,53},{53,60},{53,64},{53,90},{53,138},{53,155},{53,157},{53,194},{53,204},{54,12},{54,28},{54,54},{54,60},{54,82},{54,112},{54,139},{54,151},{54,156},{54,183},{55,3},{55,17},{55,37},{55,55},{55,99},{55,112},{55,148},{55,157},{55,172},{55,189},{56,20},{56,31},{56,56},{56,80},{56,91},{56,152},{56,156},{56,158},{56,162},{56,180},{57,28},{57,57},{57,66},{57,81},{57,89},{57,134},{57,137},{57,159},{57,172},{57,196},{58,5},{58,58},{58,70},{58,78},{58,91},{58,118},{58,149},{58,154},{58,160},{58,201},{59,18},{59,24},{59,59},{59,88},{59,96},{59,150},{59,152},{59,161},{59,179},{59,183},{60,21},{60,38},{60,55},{60,59},{60,60},{60,162},{60,176},{60,187},{60,190},{60,197},{61,61},{61,69},{61,74},{61,93},{61,101},{61,111},{61,128},{61,163},{61,193},{61,196},{62,6},{62,7},{62,35},{62,62},{62,96},{62,103},{62,113},{62,129},{62,164},{62,200},{63,16},{63,27},{63,44},{63,63},{63,88},{63,121},{63,134},{63,165},{63,175},{63,188},{64,4},{64,26},{64,64},{64,79},{64,84},{64,119},{64,134},{64,136},{64,166},{64,168},{65,12},{65,13},{65,52},{65,57},{65,65},{65,106},{65,138},{65,142},{65,167},{65,176},{66,24},{66,30},{66,52},{66,66},{66,102},{66,112},{66,117},{66,122},{66,135},{66,168},{67,6},{67,57},{67,67},{67,85},{67,97},{67,140},{67,169},{67,182},{67,184},{67,186},{68,6},{68,58},{68,68},{68,71},{68,90},{68,134},{68,143},{68,145},{68,152},{68,170},{69,54},{69,57},{69,59},{69,69},{69,77},{69,103},{69,104},{69,114},{69,136},{69,171},{70,19},{70,24},{70,56},{70,70},{70,100},{70,105},{70,114},{70,128},{70,129},{70,172},{71,14},{71,52},{71,63},{71,70},{71,71},{71,120},{71,169},{71,173},{71,178},{71,196},{72,11},{72,25},{72,39},{72,66},{72,72},{72,120},{72,130},{72,132},{72,174},{72,199},{73,48},{73,49},{73,64},{73,73},{73,98},{73,111},{73,175},{73,179},{73,201},{73,202},{74,9},{74,15},{74,58},{74,74},{74,84},{74,107},{74,120},{74,135},{74,164},{74,176},{75,28},{75,41},{75,70},{75,75},{75,96},{75,133},{75,155},{75,166},{75,177},{75,202},{76,26},{76,45},{76,65},{76,76},{76,94},{76,144},{76,158},{76,172},{76,178},{76,203},{77,10},{77,13},{77,77},{77,84},{77,87},{77,127},{77,151},{77,163},{77,179},{77,191},{78,49},{78,55},{78,65},{78,78},{78,90},{78,122},{78,130},{78,139},{78,180},{78,182},{79,33},{79,43},{79,67},{79,79},{79,99},{79,123},{79,141},{79,181},{79,188},{79,202},{80,18},{80,19},{80,35},{80,46},{80,80},{80,153},{80,167},{80,182},{80,188},{80,193},{81,9},{81,16},{81,36},{81,55},{81,81},{81,143},{81,160},{81,183},{81,186},{81,191},{82,10},{82,11},{82,79},{82,82},{82,96},{82,108},{82,111},{82,126},{82,172},{82,184},{83,12},{83,36},{83,69},{83,83},{83,87},{83,148},{83,174},{83,185},{83,202},{83,204},{84,45},{84,47},{84,48},{84,75},{84,84},{84,108},{84,123},{84,142},{84,153},{84,186},{85,9},{85,46},{85,53},{85,54},{85,85},{85,115},{85,121},{85,129},{85,177},{85,187},{86,22},{86,64},{86,83},{86,86},{86,91},{86,107},{86,116},{86,171},{86,188},{86,199},{87,8},{87,22},{87,61},{87,81},{87,87},{87,104},{87,120},{87,182},{87,189},{87,198},{88,32},{88,33},{88,39},{88,51},{88,88},{88,129},{88,143},{88,171},{88,180},{88,190},{89,3},{89,21},{89,52},{89,89},{89,100},{89,103},{89,109},{89,115},{89,125},{89,191},{90,20},{90,40},{90,44},{90,61},{90,90},{90,118},{90,137},{90,153},{90,184},{90,192},{91,6},{91,23},{91,29},{91,84},{91,91},{91,144},{91,155},{91,173},{91,185},{91,193},{92,14},{92,49},{92,72},{92,92},{92,102},{92,147},{92,171},{92,185},{92,186},{92,194},{93,5},{93,21},{93,29},{93,65},{93,93},{93,105},{93,110},{93,119},{93,184},{93,195},{94,39},{94,80},{94,82},{94,94},{94,98},{94,107},{94,113},{94,131},{94,166},{94,196},{95,30},{95,47},{95,50},{95,63},{95,95},{95,104},{95,118},{95,161},{95,163},{95,197},{96,25},{96,34},{96,56},{96,68},{96,96},{96,116},{96,181},{96,186},{96,196},{96,198},{97,36},{97,38},{97,46},{97,89},{97,97},{97,113},{97,136},{97,150},{97,157},{97,199},{98,3},{98,12},{98,18},{98,30},{98,98},{98,136},{98,170},{98,187},{98,198},{98,200},{99,53},{99,62},{99,74},{99,97},{99,99},{99,104},{99,119},{99,156},{99,185},{99,201},{100,16},{100,68},{100,82},{100,95},{100,100},{100,106}};
 
                 for(snr_count=0;snr_count<snr_range;snr_count++)
	{
      //  cout<<"Decoder run for SNR in db=" <<snr_db[snr_count]<<endl;
				snr=pow(10,(snr_db[snr_count]/10));
				
				ModulationSchemeValues (modulationScheme, noOfSymbols, var, d, col, rate, snr);  // determining various values based on mdulation scheme
        
        							// calulating noise variance from SNR
				BER[snr_count]=0;									// initializing BER
             //   normal_distribution<double> dist(0.0, 1);
                N=0;
                errorsAccumulated=0;
					while(errorsAccumulated<=maxErrors && N<=maxTransmissions)
					{		
                        N++;
                        
                        InitializeChannelLLR( var, modulationScheme, noOfSymbols, x, noise,  L_ch, d, rows_p, h, LLR);
                        
                        for(looping=0;looping<decoderIterations;looping++)
						{
							
                            SPADecoder(rows_p, LLR, h, LLR_ret, L_ch, L_dec, y, z, col  );
                     printf("%d\t", y[looping]);
						}
										
							if(z==1)											// if decoded correctly BER for that codeword is zero
								{
									BER[snr_count]=BER[snr_count]+0;

								}
							else 												// if not decoded properly calulating the BER
								{		
									error_bits=0;
									for(i=0;i<col;i++)
									{
										if(y[i]!=0)
										{
											error_bits++;
											
										}
									}
                                    errorsAccumulated+=error_bits;
                                    error=error_bits/(double)col;
									BER[snr_count]=BER[snr_count]+error;
								}
                        if(N%300==0)
                     //   cout<<"iteration="<<N<<"\t"<<"errors accumulated="<<errorsAccumulated<<endl;
					}
					
					BER[snr_count]=BER[snr_count]/(double)N; 					// averaging BER over all decoding iterations.
					printf("snr=%lf\tBER[%d]=%lf \n",snr_db[snr_count],snr_count,BER[snr_count]);
	}
	
return 0;
		
	
}





警告信息







Warning Messages


prog.c: In function 'main':
prog.c:236:2: error: variable-sized object may not be initialized
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
  ^
prog.c:236:14: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
              ^
prog.c:236:14: note: (near initialization for 'x')
prog.c:236:16: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                ^
prog.c:236:16: note: (near initialization for 'x')
prog.c:236:18: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                  ^
prog.c:236:18: note: (near initialization for 'x')
prog.c:236:20: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                    ^
prog.c:236:20: note: (near initialization for 'x')
prog.c:236:22: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                      ^
prog.c:236:22: note: (near initialization for 'x')
prog.c:236:24: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                        ^
prog.c:236:24: note: (near initialization for 'x')
prog.c:236:26: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                          ^
prog.c:236:26: note: (near initialization for 'x')
prog.c:236:28: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                            ^
prog.c:236:28: note: (near initialization for 'x')
prog.c:236:30: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                              ^
prog.c:236:30: note: (near initialization for 'x')
prog.c:236:32: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                ^
prog.c:236:32: note: (near initialization for 'x')
prog.c:236:34: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                  ^
prog.c:236:34: note: (near initialization for 'x')
prog.c:236:36: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                    ^
prog.c:236:36: note: (near initialization for 'x')
prog.c:236:38: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                      ^
prog.c:236:38: note: (near initialization for 'x')
prog.c:236:40: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                        ^
prog.c:236:40: note: (near initialization for 'x')
prog.c:236:42: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                          ^
prog.c:236:42: note: (near initialization for 'x')
prog.c:236:44: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                            ^
prog.c:236:44: note: (near initialization for 'x')
prog.c:236:46: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                              ^
prog.c:236:46: note: (near initialization for 'x')
prog.c:236:48: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                                ^
prog.c:236:48: note: (near initialization for 'x')
prog.c:236:50: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                                  ^
prog.c:236:50: note: (near initialization for 'x')
prog.c:236:52: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                                    ^
prog.c:236:52: note: (near initialization for 'x')
prog.c:236:54: warning: excess elements in array initializer
  int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1}
                                                      ^
prog.c:236:54: note: (near initialization for 'x')
prog.c:237:5: error: expected ',' or ';' before 'int'
     int  ret,row=0;
     ^
prog.c:261:83: warning: passing argument 4 of 'InitializeChannelLLR' from incompatible pointer type [-Wincompatible-pointer-types]
                         InitializeChannelLLR( var, modulationScheme, noOfSymbols, x, noise,  L_ch, d, rows_p, h, LLR);
                                                                                   ^
prog.c:90:6: note: expected 'float *' but argument is of type 'int *'
 void InitializeChannelLLR (double var, int modulationScheme, int noOfSymbols, float x[], float noise[], double L_ch[], float d, int rows_p, int (*h)[2], double LLR[])
      ^
prog.c:292:6: error: expected expression before '}' token
      }
      ^





我试过的:





What I have tried:

Warning: excess elements in array initializer

。我需要尽快完成这个项目。所以请任何人帮忙解决问题。

. I need to complete this project soon. So please anyone help in sorting out the problem.

推荐答案

你已经在 C:警告:数组初始化程序中的多余元素 - C / C ++ / MFC讨论板 [ ^ ]并得到了我的回答在 Re:C:警告:数组初始化程序中的多余元素 - C / C ++ / MFC讨论区 [ ^ ]至少解决了你问题主题的警告。



我能做的一切可以在那里回答:

我t是警告。您可以忽略它(它不会影响代码生成和执行)或执行我的建议(不要设置初始化数组的大小或将其设置为实际大小):

You have already asked similar at C: warning: excess elements in array initializer - C / C++ / MFC Discussion Boards[^] and got an answer from me at Re: C: warning: excess elements in array initializer - C / C++ / MFC Discussion Boards[^] which solved at least the warning from the subject of your question.

All I can add to may answer there:
It is a warning. You can ignore it (it does not affect the code generation and execution) or do what I suggested (don't set the size for initialised arrays or set it to the real size):
// Ensure that col is 21 or don't do this to avoid warnings
//int x[col]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1};
// Use this instead
int x[]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1};
// Or this
//int x[21]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1};




prog.c:237:5: error: expected ',' or ';' before 'int'
     int  ret,row=0;

很清楚。阅读上一行。那里缺少终止分号(在你的代码中;不在我上面的例子中)。



Quite clear. Read the previous line. The terminating semicolon is missing there (in your code; not in my above examples).

prog.c:261:83: warning: passing argument 4 of 'InitializeChannelLLR' from incompatible pointer type [-Wincompatible-pointer-types]
                         InitializeChannelLLR( var, modulationScheme, noOfSymbols, x, noise,  L_ch, d, rows_p, h, LLR);

检查你的代码:你传递 x 作为第四个参数,类型为 int [] 但是该函数需要 float []



Check your code: You are passing x as 4th argument which is of type int[] but the function expects a float[].

prog.c:292:6: error: expected expression before '}' token

再次:检查该位置的代码:

Again: Check the code at that position:

{
    // ... some other code
    if(N%300==0)
    //   cout<<"iteration="<<N<<"\t"<<"errors accumulated="<<errorsAccumulated<<endl;
}

通过评论一行你有一个未终止的 if 条件。您还必须对条件进行注释或在注释行周围添加括号。

By commenting a line you have an unterminated if condition. You have to comment the condition too or add parentheses around the commented line.


我强烈建议您在使用变量来声明和调整数组之前初始化变量。

使用调试器查看代码正在做什么。



有一个工具可以让你看到代码在做什么,它的名字是 debugger 。它也是一个很好的学习工具,因为它向你展示了现实,你可以看到哪种期望与现实相符。

当你不明白你的代码在做什么或为什么它做它做的时候,答案就是答案是调试器

使用调试器查看代码正在执行的操作。只需设置断点并查看代码执行情况,调试器允许您逐行执行第1行并在执行时检查变量。



调试器 - 维基百科,免费的百科全书 [ ^ ]



掌握Visual Studio 2010中的调试 - 初学者指南 [ ^ ]

使用Visual Studio 2010进行基本调试 - YouTube [ ^ ]

调试器在这里向您展示您的代码正在做什么,您的任务是与什么进行比较应该这样做。

调试器中没有魔法,它没有找到错误,它只是帮助你。当代码没有达到预期的效果时,你就接近了一个错误。
I strongly suggest that you initialize variables before using them to declare and size arrays.
Use the debugger to see what your code is doing.

There is a tool that allow you to see what your code is doing, its name is debugger. It is also a great learning tool because it show you reality and you can see which expectation match reality.
When you don't understand what your code is doing or why it does what it does, the answer is debugger.
Use the debugger to see what your code is doing. Just set a breakpoint and see your code performing, the debugger allow you to execute lines 1 by 1 and to inspect variables as it execute.

Debugger - Wikipedia, the free encyclopedia[^]

Mastering Debugging in Visual Studio 2010 - A Beginner's Guide[^]
Basic Debugging with Visual Studio 2010 - YouTube[^]
The debugger is here to show you what your code is doing and your task is to compare with what it should do.
There is no magic in the debugger, it don't find bugs, it just help you to. When the code don't do what is expected, you are close to a bug.


根据你的指令,我修改并执行了代码但
As per your instrctions, i have modified and executed the codes but
While compiling below codes i am getting "Segmentation Faults" notification in a compile window. I don`t know what`s wrong in the code. Please suggest me.







#include <stdio.h>
#include <math.h>
 
#define COL 204
#define COL_P 2
#define ROWS_P 1020
 
int codecheck(int col,int col_p,int rows_p,int (*h)[2],int x[])
{	int i,j,m,f; //flags
	int sum = 0;
	int y[COL];
	
	for (i=0;i<COL;i++)
	y[i]=0;
	m=1;
	f=-1;
	for(i=0;i<rows_p;)							 
	{			
		for(j=0;j<rows_p;j++)
		{
			if(h[j][0]==m)
			{		
				y[m]=y[m] + x[h[j][1]-1];
					f++;
			}
		}
		y[m]=y[m]%2;
		m=m+1;
		i=f+1;
	}
 
	for (i = 0; i < COL; ++i) 
		{
			sum =sum+ y[i];
		}
	if (sum == 0) 
		{
			return 1;
		}
	else
		{	
			return -1;
		}
				
}
 
int codesum (int y[],int col)
{
    int sum=0;
    for(int i=0;i<COL;i++)
        sum+=y[i];
    //cout<< "sum="<< sum<<endl;
    if(sum>0)
        return 0;
    else
        return 1;
}

void ModulationSchemeValues (int modulationScheme, int noOfSymbols, double var, float d, int col, float rate, double snr)
{
	            switch (modulationScheme)
            {
                case 0:
                    //cout<<"case 0"<<endl;
                    var=1/(2*rate*snr);
                    noOfSymbols = col;
                    d=1;
                    break;
                case 1:
                    //cout<<"case 1"<<endl;
                    var=1/(4*rate*snr);
                    noOfSymbols = col/2;
                    d=1/sqrt(2);
                    break;
                case 2:
                    //cout<<"case 2"<<endl;
                    var=1/(8*rate*snr);
                    noOfSymbols = col/4;
                    d=1/sqrt(10);
                default:
                    var=1/(2*rate*snr);
                    noOfSymbols = col;
                    d=1;
                    break;
            }
}

void InitializeChannelLLR (double var, int modulationScheme, int noOfSymbols, int x[], float noise[], double L_ch[], float d, int rows_p, int (*h)[2], double LLR[])
{
    
    int j=0;   // temporary flags
   int k=0,t;
    for(int i=0;i<noOfSymbols;i++)							// using randnoise function introducing noise to all zero codeword
    {
        
            x[j]=d;
            noise[j]=(x[j])+0.8;
            L_ch[j]= 2*noise[j]/var;
            j++;
       
        
    }

    
    for(int j=0;j<rows_p;j++)
    {
        //cout<<"enter loop"<<endl;
        //cout<< "j="<<j<<endl;  //<<j<<"\t";
        t=h[j][1]-1;
        LLR[j]=L_ch[t];
    }
    //cout<<"L_ch initialize done \n";

}
 
void SPADecoder(int rows_p, double LLR[], int (*h)[2], double LLR_ret[], double L_ch[],  double L_dec[], int y[], int z, int col)
{
    double temp;
	int col_p;
    int i,j,k;
    for(i=0;i<rows_p;i++)
    {
        temp=1;
        for(j=0;j<rows_p;j++)
        {
            if(j!=i && h[j][0]==h[i][0])
            {
                temp=temp * tanhf(LLR[j]/2);
            }
        }
								
								
        LLR_ret[i] = log((1 + temp)/(1 - temp));     // lower and upper bounding the LLR
								
        if(LLR_ret[i] > 40)
        {
            LLR_ret[i]=40;
        }
        else if(LLR_ret[i]<-40)
        {
            LLR_ret[i]=-40;
        }
        
    }
    
    for(i=0;i<COL;i++)							// L_dec array used to decide the value of each bit of codeword here it is initalized to LLr value received from channel
    {
        L_dec[i]=L_ch[i];
    }
    
    
    for(i=1;i<col+1;i++)						// LLR values received by the variable nodes are added and stored in L_dec for decision making
    {
        for(j=0;j<rows_p;j++)
        {
            if(h[j][1]==i)
            {
                L_dec[i-1]=L_dec[i-1]+LLR_ret[j];
            }
            
        }
        
        if(L_dec[i-1]<=0)						// decision about the bit values of the received codeword is done her and stored in Y.
        {
            y[i-1]=1;
        }
        else
        {
            y[i-1]=0;
        }
        
    }
    
    
    //z = codesum(y,col);
    z=codecheck(col, col_p,rows_p,h,y); // checking whether the decoded codeword is all zero or not
    
    if(z==1)								// if decoded perfectly exit the deoding loop
    {
        return ;
    }
    // updating LLR values on variable nodes side for each variable and check node
    for(i=0;i<rows_p;i++)
    {
        temp=0;
        for(j=0;j<rows_p;j++)
        {
            if(j!=i && h[j][1]==h[i][1])
            {
                temp=temp + LLR_ret[j];
                k=h[i][1];
                
            }
        }
        LLR[i] = temp+L_ch[k-1];
    }
 
}
 
int main()
{
    
    
	// flags and counters
int z,i,j,N,k,ber_count,looping,t,sum;
    float d=1;
	float rate=0.5;
	int rows_p,col_p;
	int col,y[col],maxTransmissions=20,decoderIterations=10,maxErrors=100,errorsAccumulated=0;			// iterations gives the maximum number of time the decoder is run for each value of SNR
//	 printf("enter number of rows in the txt file being given as input\n");
//	 scanf("%d",&rows_p);
 
//	 printf("\n enter number of columns \n");
//	 scanf("%d",&col);
//	int *y=(int*) calloc (col,sizeof(int));	 //the decoded codeword will be saved here.
    
//	float *x=(float*) calloc (col,sizeof(float));
//	double *noise=(double*) calloc (col,sizeof(double));		// noise array is noise added to all zero codeword.
	//double noise[]={1.1,0.9,-0.1,1.1,-1.1,0.9}		;
    
	double var,snr;
	double temp; 								//temp variable
    
//	double *L_ch=(double*) calloc (col,sizeof(double));			//holds LLR values given by the channel
//	double *L_dec=(double*) calloc (col,sizeof(double));
    
    float noise[col];  // "x" will be used as a codeword and "y" is received codeword.
    double L_ch[col],L_dec[col];    //holds LLR values given by the channel
	double LLR[rows_p],LLR_ret[rows_p];					//hold updated LLR values at variable node and check node respectively
	double BER[11];												// BER array one for each SNR as SNR is varied from 0-10 in steps of 1
    float snr_db[]={0,1,2,3,4};
    int snr_range=5,snr_count;
	int x[]={0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1};
    int  ret,row=0;
	double error_bits,error;
    // Set Field Separator here

    int modulationScheme = 0,noOfSymbols=204;
    
int h[ROWS_P][COL_P]={{1,1},{1,18},{1,27},{1,82},{1,102},{1,103},{1,130},{1,177},{1,190},{1,203},{2,2},{2,15},{2,75},{2,80},{2,86},{2,104},{2,121},{2,141},{2,144},{2,191},{3,3},{3,31},{3,32},{3,42},{3,101},{3,105},{3,153},{3,159},{3,178},{3,199},{4,4},{4,37},{4,71},{4,75},{4,85},{4,106},{4,111},{4,114},{4,127},{4,164},{5,5},{5,17},{5,42},{5,72},{5,87},{5,107},{5,141},{5,158},{5,193},{5,197},{6,4},{6,6},{6,17},{6,78},{6,102},{6,108},{6,162},{6,165},{6,167},{6,174},{7,7},{7,23},{7,73},{7,80},{7,83},{7,109},{7,118},{7,168},{7,177},{7,178},{8,8},{8,33},{8,37},{8,73},{8,100},{8,110},{8,156},{8,173},{8,192},{8,197},{9,9},{9,40},{9,41},{9,88},{9,92},{9,103},{9,111},{9,173},{9,181},{9,199},{10,10},{10,14},{10,23},{10,53},{10,93},{10,107},{10,112},{10,137},{10,167},{10,175},{11,11},{11,19},{11,26},{11,28},{11,88},{11,110},{11,113},{11,116},{11,170},{11,191},{12,1},{12,12},{12,25},{12,86},{12,97},{12,108},{12,114},{12,124},{12,161},{12,192},{13,4},{13,13},{13,33},{13,34},{13,50},{13,115},{13,137},{13,140},{13,146},{13,160},{14,14},{14,31},{14,40},{14,58},{14,95},{14,116},{14,121},{14,166},{14,174},{14,203},{15,15},{15,68},{15,70},{15,87},{15,101},{15,109},{15,113},{15,117},{15,165},{15,180},{16,4},{16,16},{16,59},{16,67},{16,92},{16,118},{16,125},{16,131},{16,138},{16,151},{17,15},{17,17},{17,44},{17,71},{17,73},{17,119},{17,161},{17,190},{17,194},{17,198},{18,18},{18,47},{18,62},{18,85},{18,93},{18,120},{18,122},{18,125},{18,146},{18,181},{19,19},{19,22},{19,23},{19,37},{19,57},{19,121},{19,126},{19,130},{19,131},{19,143},{20,1},{20,20},{20,50},{20,51},{20,99},{20,106},{20,122},{20,169},{20,179},{20,200},{21,21},{21,32},{21,62},{21,72},{21,98},{21,123},{21,126},{21,154},{21,168},{21,204},{22,22},{22,31},{22,44},{22,89},{22,98},{22,124},{22,141},{22,160},{22,169},{22,176},{23,23},{23,32},{23,61},{23,65},{23,99},{23,125},{23,132},{23,133},{23,147},{23,152},{24,16},{24,24},{24,42},{24,73},{24,77},{24,126},{24,142},{24,145},{24,146},{24,147},{25,5},{25,24},{25,25},{25,55},{25,67},{25,127},{25,133},{25,165},{25,178},{25,185},{26,10},{26,26},{26,27},{26,40},{26,85},{26,128},{26,147},{26,155},{26,160},{26,200},{27,22},{27,27},{27,42},{27,50},{27,74},{27,108},{27,129},{27,154},{27,170},{27,195},{28,2},{28,28},{28,63},{28,67},{28,94},{28,130},{28,150},{28,171},{28,187},{28,192},{29,29},{29,48},{29,69},{29,79},{29,90},{29,116},{29,131},{29,159},{29,176},{29,200},{30,7},{30,30},{30,53},{30,58},{30,94},{30,127},{30,132},{30,140},{30,162},{30,189},{31,29},{31,31},{31,64},{31,77},{31,94},{31,117},{31,133},{31,167},{31,183},{31,190},{32,20},{32,30},{32,32},{32,74},{32,78},{32,115},{32,134},{32,151},{32,181},{32,194},{33,11},{33,33},{33,47},{33,76},{33,81},{33,109},{33,135},{33,154},{33,155},{33,179},{34,2},{34,7},{34,34},{34,71},{34,76},{34,136},{34,138},{34,159},{34,182},{34,183},{35,27},{35,29},{35,35},{35,60},{35,86},{35,123},{35,137},{35,149},{35,166},{35,189},{36,17},{36,35},{36,36},{36,48},{36,100},{36,138},{36,139},{36,146},{36,163},{36,168},{37,5},{37,34},{37,37},{37,38},{37,69},{37,117},{37,139},{37,145},{37,169},{37,203},{38,38},{38,56},{38,76},{38,92},{38,101},{38,106},{38,123},{38,140},{38,161},{38,170},{39,39},{39,41},{39,60},{39,76},{39,78},{39,125},{39,141},{39,142},{39,175},{39,198},{40,2},{40,35},{40,40},{40,43},{40,93},{40,114},{40,135},{40,142},{40,148},{40,158},{41,1},{41,2},{41,13},{41,41},{41,59},{41,109},{41,119},{41,132},{41,143},{41,157},{42,11},{42,42},{42,43},{42,92},{42,95},{42,115},{42,117},{42,144},{42,156},{42,204},{43,7},{43,9},{43,43},{43,45},{43,56},{43,122},{43,145},{43,192},{43,194},{43,201},{44,10},{44,44},{44,75},{44,83},{44,95},{44,110},{44,135},{44,146},{44,157},{44,180},{45,45},{45,63},{45,79},{45,81},{45,97},{45,127},{45,139},{45,147},{45,148},{45,195},{46,34},{46,46},{46,61},{46,66},{46,77},{46,105},{46,144},{46,148},{46,197},{46,201},{47,14},{47,20},{47,46},{47,47},{47,83},{47,124},{47,128},{47,132},{47,149},{47,159},{48,8},{48,13},{48,26},{48,48},{48,62},{48,149},{48,150},{48,174},{48,193},{48,195},{49,15},{49,21},{49,25},{49,49},{49,51},{49,145},{49,149},{49,151},{49,177},{49,188},{50,8},{50,49},{50,50},{50,54},{50,89},{50,105},{50,126},{50,152},{50,164},{50,165},{51,43},{51,51},{51,66},{51,68},{51,91},{51,131},{51,133},{51,153},{51,187},{51,189},{52,1},{52,39},{52,45},{52,52},{52,54},{52,110},{52,140},{52,150},{52,154},{52,163},{53,8},{53,53},{53,60},{53,64},{53,90},{53,138},{53,155},{53,157},{53,194},{53,204},{54,12},{54,28},{54,54},{54,60},{54,82},{54,112},{54,139},{54,151},{54,156},{54,183},{55,3},{55,17},{55,37},{55,55},{55,99},{55,112},{55,148},{55,157},{55,172},{55,189},{56,20},{56,31},{56,56},{56,80},{56,91},{56,152},{56,156},{56,158},{56,162},{56,180},{57,28},{57,57},{57,66},{57,81},{57,89},{57,134},{57,137},{57,159},{57,172},{57,196},{58,5},{58,58},{58,70},{58,78},{58,91},{58,118},{58,149},{58,154},{58,160},{58,201},{59,18},{59,24},{59,59},{59,88},{59,96},{59,150},{59,152},{59,161},{59,179},{59,183},{60,21},{60,38},{60,55},{60,59},{60,60},{60,162},{60,176},{60,187},{60,190},{60,197},{61,61},{61,69},{61,74},{61,93},{61,101},{61,111},{61,128},{61,163},{61,193},{61,196},{62,6},{62,7},{62,35},{62,62},{62,96},{62,103},{62,113},{62,129},{62,164},{62,200},{63,16},{63,27},{63,44},{63,63},{63,88},{63,121},{63,134},{63,165},{63,175},{63,188},{64,4},{64,26},{64,64},{64,79},{64,84},{64,119},{64,134},{64,136},{64,166},{64,168},{65,12},{65,13},{65,52},{65,57},{65,65},{65,106},{65,138},{65,142},{65,167},{65,176},{66,24},{66,30},{66,52},{66,66},{66,102},{66,112},{66,117},{66,122},{66,135},{66,168},{67,6},{67,57},{67,67},{67,85},{67,97},{67,140},{67,169},{67,182},{67,184},{67,186},{68,6},{68,58},{68,68},{68,71},{68,90},{68,134},{68,143},{68,145},{68,152},{68,170},{69,54},{69,57},{69,59},{69,69},{69,77},{69,103},{69,104},{69,114},{69,136},{69,171},{70,19},{70,24},{70,56},{70,70},{70,100},{70,105},{70,114},{70,128},{70,129},{70,172},{71,14},{71,52},{71,63},{71,70},{71,71},{71,120},{71,169},{71,173},{71,178},{71,196},{72,11},{72,25},{72,39},{72,66},{72,72},{72,120},{72,130},{72,132},{72,174},{72,199},{73,48},{73,49},{73,64},{73,73},{73,98},{73,111},{73,175},{73,179},{73,201},{73,202},{74,9},{74,15},{74,58},{74,74},{74,84},{74,107},{74,120},{74,135},{74,164},{74,176},{75,28},{75,41},{75,70},{75,75},{75,96},{75,133},{75,155},{75,166},{75,177},{75,202},{76,26},{76,45},{76,65},{76,76},{76,94},{76,144},{76,158},{76,172},{76,178},{76,203},{77,10},{77,13},{77,77},{77,84},{77,87},{77,127},{77,151},{77,163},{77,179},{77,191},{78,49},{78,55},{78,65},{78,78},{78,90},{78,122},{78,130},{78,139},{78,180},{78,182},{79,33},{79,43},{79,67},{79,79},{79,99},{79,123},{79,141},{79,181},{79,188},{79,202},{80,18},{80,19},{80,35},{80,46},{80,80},{80,153},{80,167},{80,182},{80,188},{80,193},{81,9},{81,16},{81,36},{81,55},{81,81},{81,143},{81,160},{81,183},{81,186},{81,191},{82,10},{82,11},{82,79},{82,82},{82,96},{82,108},{82,111},{82,126},{82,172},{82,184},{83,12},{83,36},{83,69},{83,83},{83,87},{83,148},{83,174},{83,185},{83,202},{83,204},{84,45},{84,47},{84,48},{84,75},{84,84},{84,108},{84,123},{84,142},{84,153},{84,186},{85,9},{85,46},{85,53},{85,54},{85,85},{85,115},{85,121},{85,129},{85,177},{85,187},{86,22},{86,64},{86,83},{86,86},{86,91},{86,107},{86,116},{86,171},{86,188},{86,199},{87,8},{87,22},{87,61},{87,81},{87,87},{87,104},{87,120},{87,182},{87,189},{87,198},{88,32},{88,33},{88,39},{88,51},{88,88},{88,129},{88,143},{88,171},{88,180},{88,190},{89,3},{89,21},{89,52},{89,89},{89,100},{89,103},{89,109},{89,115},{89,125},{89,191},{90,20},{90,40},{90,44},{90,61},{90,90},{90,118},{90,137},{90,153},{90,184},{90,192},{91,6},{91,23},{91,29},{91,84},{91,91},{91,144},{91,155},{91,173},{91,185},{91,193},{92,14},{92,49},{92,72},{92,92},{92,102},{92,147},{92,171},{92,185},{92,186},{92,194},{93,5},{93,21},{93,29},{93,65},{93,93},{93,105},{93,110},{93,119},{93,184},{93,195},{94,39},{94,80},{94,82},{94,94},{94,98},{94,107},{94,113},{94,131},{94,166},{94,196},{95,30},{95,47},{95,50},{95,63},{95,95},{95,104},{95,118},{95,161},{95,163},{95,197},{96,25},{96,34},{96,56},{96,68},{96,96},{96,116},{96,181},{96,186},{96,196},{96,198},{97,36},{97,38},{97,46},{97,89},{97,97},{97,113},{97,136},{97,150},{97,157},{97,199},{98,3},{98,12},{98,18},{98,30},{98,98},{98,136},{98,170},{98,187},{98,198},{98,200},{99,53},{99,62},{99,74},{99,97},{99,99},{99,104},{99,119},{99,156},{99,185},{99,201},{100,16},{100,68},{100,82},{100,95},{100,100},{100,106}};
 
                 for(snr_count=0;snr_count<snr_range;snr_count++)
	{
      //  cout<<"Decoder run for SNR in db=" <<snr_db[snr_count]<<endl;
				snr=pow(10,(snr_db[snr_count]/10));
				
				ModulationSchemeValues (modulationScheme, noOfSymbols, var, d, col, rate, snr);  // determining various values based on mdulation scheme
        
        							// calulating noise variance from SNR
				BER[snr_count]=0;									// initializing BER
             //   normal_distribution<double> dist(0.0, 1);
                N=0;
                errorsAccumulated=0;
					while(errorsAccumulated<=maxErrors && N<=maxTransmissions)
					{		
                        N++;
                        
                        InitializeChannelLLR( var, modulationScheme, noOfSymbols, x, noise,  L_ch, d, rows_p, h, LLR);
                        
                        for(looping=0;looping<decoderIterations;looping++)
						{
							
                            SPADecoder(rows_p, LLR, h, LLR_ret, L_ch, L_dec, y, z, col  );
                     printf("%d\t", y[looping]);
						}
										
							if(z==1)											// if decoded correctly BER for that codeword is zero
								{
									BER[snr_count]=BER[snr_count]+0;

								}
							else 												// if not decoded properly calulating the BER
								{		
									error_bits=0;
									for(i=0;i<col;i++)
									{
										if(y[i]!=0)
										{
											error_bits++;
											
										}
									}
                                    errorsAccumulated+=error_bits;
                                    error=error_bits/(double)col;
									BER[snr_count]=BER[snr_count]+error;
								}
                    if(N%300==0)
                     printf("iteration=%d \t errors accumulated=%d \n",N,errorsAccumulated);
					}
					
					BER[snr_count]=BER[snr_count]/(double)N; 					// averaging BER over all decoding iterations.
					printf("snr=%lf\tBER[%d]=%lf \n",snr_db[snr_count],snr_count,BER[snr_count]);
				
	}
		return 0;
}


这篇关于警告:数组初始化程序中的多余元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆