removeone.c

来自「Matlab codes for Hidden Sapce Support ve」· C语言 代码 · 共 49 行

C
49
字号
#include "mex.h"

void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
	double *R,*z;
	int i_out,i,j,mrows,ncols,mrowsr,ncolsr;
	R = mxGetPr(prhs[0]);
	i_out = mxGetScalar(prhs[1]);
	i_out = i_out-1;
	mrows = mxGetM(prhs[0]);
	ncols = mxGetN(prhs[0]);
	mrowsr = mrows-1;
	ncolsr = ncols-1;
	plhs[0] = mxCreateDoubleMatrix(mrowsr,ncolsr,mxREAL);
	z = mxGetPr(plhs[0]);
	for (i=0;i<i_out;i++)
	{
		for(j=0;j<i_out;j++)
		{
			*(z+i*ncolsr+j) = *(R+i*ncols+j)-*(R+i*ncols+i_out)* *(R+i_out*ncols+j)/ *(R+i_out*ncols+i_out);
		}
	}

	for (i=0;i<i_out;i++)
	{
		for (j=i_out;j<mrowsr;j++)
		{
			*(z+i*ncolsr+j) = *(R+i*ncols+j+1)-*(R+i*ncols+i_out)* *(R+i_out*ncols+j+1)/ *(R+i_out*ncols+i_out);
		}
	}
	
	for (i=i_out;i<ncolsr;i++)
	{
		for (j=0;j<i_out;j++)
		{
			*(z+i*ncolsr+j) = *(R+(i+1)*ncols+j)-*(R+(i+1)*ncols+i_out)* *(R+i_out*ncols+j)/ *(R+i_out*ncols+i_out);
		}
	}
	
	for (i=i_out;i<ncolsr;i++)
	{
		for (j=i_out;j<mrowsr;j++)
		{
			*(z+i*ncolsr+j) = *(R+(i+1)*ncols+j+1)-*(R+(i+1)*ncols+i_out)* *(R+i_out*ncols+j+1)/ *(R+i_out*ncols+i_out);
		}
	}
	return;
}

⌨️ 快捷键说明

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