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

📄 hadamard.cpp

📁 用matlab程序实现WCDMA系统的仿真
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>

int *Hadamard( unsigned N )
/*************************************************************************************
/ int *Hadamard( unsigned N )
/
/ Copyright 2002 The Mobile and Portable Radio Research Group
/
/
/ Produces a 2^N by 2^N Hadamard Matrix
/
/ Returns an integer pointer to a 2^(2N) array that contains the resultant 
/ hadamard matrix
/
/ Parmeters
/	Input
/		N	unsigned	Used to determine the size of the Hadamard matrix.  The size 
/						of the Hadamard matrix is 2^N by 2^N
/
/*************************************************************************************/
{
	unsigned Nold,Nnew,k,j,i,Npower2,Nhalf;
	int *Hold,*Hnew,*TempHold,*TempHnew;

	Hold = (int *) calloc(1,sizeof(int));
	*Hold = 1;
	Nold = 1;
	k=0;
	Npower2 = 1;

	for (k=1; k<=N; k++)
	{
		Npower2 = (unsigned) pow( (double) 2.0, (double) k);
		Nnew = Npower2 * Npower2;
		Hnew = (int *) calloc(Nnew,sizeof(int));
		if (Hnew == NULL)
		{
			printf("\nk = %d: Matrix Hnew not allocated--exiting\n",k);
			exit(NULL);
		}
		Nhalf = Npower2/2;

		TempHold = Hold;
		TempHnew = Hnew;
		for (i=0; i<Nhalf; i++)
		{
			TempHold = Hold + i*Nhalf;
			for (j=0; j<Nhalf; j++) *TempHnew++ = *TempHold++;
			TempHold = Hold + i*Nhalf;
			for (j=0; j<Nhalf; j++) *TempHnew++ = *TempHold++;
		}

		for (i=0; i<Nhalf; i++)
		{
			TempHold = Hold + i*Nhalf;
			for (j=0; j<Nhalf; j++) *TempHnew++ = *TempHold++;
			TempHold = Hold + i*Nhalf;
			for (j=0; j<Nhalf; j++) *TempHnew++ = -(*TempHold++);
		}
		free(Hold);
		Hold = Hnew;
	}
	return(Hnew);
}


void main()
{
	int *HadMatrix,*TempMat;
	unsigned N=8,i,j,k;
	FILE *fp;

	HadMatrix = Hadamard(N);
	
	fp = fopen("sam.txt","w");

	k = (unsigned) pow( (double) 2.0, (double) N);

	TempMat=HadMatrix;
	for (i=0; i<k; i++)
	{
		for (j=0; j<k; j++) fprintf(fp,"%d ",*TempMat++);
		fprintf(fp,"\n");
	}
	fclose(fp);
}

⌨️ 快捷键说明

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