📄 walsh1.cpp
字号:
#include "math.h"
#include "malloc.h"
#include "stdio.h"
#include "mex.h"
int walsh_gen(double * Walsh,int order,int index)
{
int i,j;
int nOrderLength;
int sign;
Walsh[0]=1;
for(i=0;i<order;i++)
{
nOrderLength=1<<i;
sign=((index&nOrderLength)==0)?1:-1;
for(j=0;j<nOrderLength;j++)
Walsh[nOrderLength+j]=sign*Walsh[j];
}
return nOrderLength<<1;
}
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
/* input parameters */
int Order;
int Index;
/* output parameters */
double *OutReal;
/* local data */
int outlength;
/* Check for the proper number of arguments */
if ( nrhs != 2 )
mexErrMsgTxt("Incorrect number of inputs. ");
if ( nlhs != 1)
mexErrMsgTxt("Incorrect number of outputs. ");
/* check to make sure the input argument is a scalar */
if( !mxIsDouble(prhs[0]) || mxGetN(prhs[0])*mxGetM(prhs[0])!=1 )
{
mexErrMsgTxt("Input Order must be a scalar.");
}
if( !mxIsDouble(prhs[1]) || mxGetN(prhs[1])*mxGetM(prhs[1])!=1 )
{
mexErrMsgTxt("Input Index must be a scalar.");
}
/* Get the input parameters */
Order = (int)mxGetScalar(prhs[0]);
Index = (int)mxGetScalar(prhs[1]);
outlength = 1<<Order;
/* Create matrix for the return argument */
plhs[0] = mxCreateDoubleMatrix(1, outlength, mxREAL);
/* Assign pointers to the various parameters */
OutReal = mxGetPr(plhs[0]);
walsh_gen(OutReal, Order, Index);
}
/*
void main()
{
int order, index,i,j;
scanf("%d %d",&order,&index);
int* a;
a=(int*)malloc(1<<(2*order));
walsh_gen(a,order,index);
for(j=0; j<(1<<order); j++)
printf("%d ",a[j]);
printf("\n");
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -