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

📄 simsum.c

📁 在matlab中通过接口用c语言程序实现求和程序
💻 C
字号:
#include"mex.h"
#define x_in 0
#define y_out 0
extern double dp_sum(const int N,double *x)
{   int i;
    double sum;
    sum=0.0;
    for(i=0;i<N;i++)
    {sum+=x[i];}
    return sum;//行向量求和
       }
extern double dp_sumall(const int ndms_x,const int *dims_x,const double *x,double *y)
{ //dims_x[0]:行数,dims_x[1]:列数
    int incx;
    double *temp;
    int i,j;
    incx=1;
    temp=(double *)mxCalloc(dims_x[0],sizeof(double));//按行数分配
    for(j=0;j<dims_x[1];j++)
    {for(i=0;i<dims_x[0];i++)
        {temp[i]=x[i+j*dims_x[0]];//
            }
        y[j]=dp_sum(dims_x[0],temp);
        }}
 void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
 {
     double *x,*y;//输入输出指针
     int ndims_x,ndims_y;//指针维数
     const int *dims_x;//指针
     int *dims_y;
     int mx,nx,my,ny;
     ndims_x=mxGetNumberOfDimensions(prhs[x_in]);//输入维数
     dims_x=mxGetDimensions(prhs[x_in]);
     ndims_y=ndims_x;// output
     dims_y=(int *)mxCalloc( ndims_y,sizeof(int));
     if(ndims_y==2)
     {
     mx=mxGetM(prhs[x_in]);
     nx=mxGetN(prhs[x_in]);
     if(mx==1||nx==1)
     {my=1;ny=1;}
     else{
              my=1;ny=nx;}
             dims_y[0]=my;
             dims_y[1]=ny;
             }
             plhs[y_out]=mxCreateNumericArray(ndims_y,dims_y,mxDOUBLE_CLASS,mxREAL);
             x=mxGetPr(prhs[x_in]);
             y=mxGetPr(plhs[y_out]);
             dp_sumall(ndims_x,dims_x,x,y);
             return;
             }
             
                 
       
     
     
        
    

⌨️ 快捷键说明

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