English 中文(简体)
• 如何将多种双面图像传给肉类功能
原标题:How to pass an array of double Image to mexFunction in matlab
  • 时间:2011-11-22 18:01:45
  •  标签:
  • matlab

I have already passed an image to my mexFunction but now I need to pass an array of images and I am struggling to get the thing right. This is my code to get the simple Image. This works perfectly but when I go into 3D I don t understand how the information is arranged in the mxArray.

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) 
{
    mxArray *matrixIn = prhs[0];
    inputImage=(double *)mxGetPr(matrixIn);
    int x = int(dims[0]);
    int y = int(dims[1]);
    volume3D image(inputImage, x, y, 1);
}

volume3D::volume3D(double* image, int x, int y, int z) 
{
    allocateVolume( x, y, z); 
    for(int i=0; i<xSize; i++)
        for(int j=0; j<ySize; j++) {
            volume[i][j][0] = double(image[(i)*x+j]);
        }
}

我这样做是为了绕过它。

mwSize mrows,ncols; mrows = mxGetM(prhs[0]); ncols = mxGetN(prhs[0]);

plhs[0] = mxCreateNumericMatrix(mrows, ncols, mxDOUBLE_CLASS, mxREAL);
double *matlabTumorMap = mxGetPr(plhs[0]);
const int * dims = mxGetDimensions( plhs[0]);
int x = int(dims[0]);
int y = int(dims[1]);
int z = int(dims[2]);



mwIndex subs[3];
mexPrintf("x %i
",x);
mexPrintf("y %i
",y);
mexPrintf("z %i
",z);
mxArray *matrixTumor = plhs[0];

for(subs[0]=0; subs[0]<x; subs[0]++)
    for(subs[1]=0; subs[1]<y; subs[1]++)
        for(subs[2]=0; subs[2]<z; subs[2]++)
        {
            mwIndex x = mxCalcSingleSubscript( matrixTumor,3,subs);
            matlabTumorMap[x] = tumorMap.getVoxel(subs[0],subs[1],subs[2]);
        }
最佳回答
问题回答

你们就是这样做的。

我认为,唯一的问题是你的指数化。 请写:

 volume[i][j][0] = double(image[i+j*x]);

以及你打算写:

mwSize* dims = mxGetDimensions(matrixIn);




相关问题
MATLAB Solving equations problem

I want to solve these equations using MATLAB and I am sure there is a non zero solution. The equations are: 0.7071*x + 0.7071*z = x -0.5*x + 0.7071*y + 0.5*z = y -0.5*x - 0.7071*y +...

Difference between MATLAB s matrix notations

How do you read the following MATLAB codes? #1 K>> [p,d]=eig(A) // Not sure about the syntax. p = 0.5257 -0.8507 -0.8507 -0.5257 d = ...

preventing data from being freed when vector goes out of scope

Is there a way to transfer ownership of the data contained in a std::vector (pointed to by, say T*data) into another construct, preventing having "data" become a dangling pointer after the vector goes ...

Divide two polynomials using MATLAB

I want to divide p(x) by q(x) given that: p(x)=-5x^4+3x^2-6x q(x)=x^2+1 I tried: p=inline( -5*(x^4)+3*(x^2) , x ) p = Inline function: p(x) = -5*(x^4)+3*(x^2) q=inline( x^2+1 , x ) q = ...

matlab deals with Fibbonacci

The Fibonacci series is given as follows: 1, 2, 3, 5, 8, 13, 21, ... How can I write a script which calculates and prints the n-th Fibonacci term (for n>2), where n is inputed by the user. This ...

How do I plot lines between all points in a vector?

I have a vector containing some points in 2-D space. I want MATLAB to plot these points with lines drawn from every point to every other point. Basically, I want a graph with all vertices connected. ...

How do I create a string using a loop variable in MATLAB?

I have a loop like this: for i=1:no %some calculations fid = fopen( c:\out.txt , wt ); %write something to the file fclose(fid); end I want data to be written to different files like ...

热门标签