के साथ उपयोगकर्ता द्वारा परिभाषित structs मैं एक मैक्स फ़ंक्शन के उपयोग के माध्यम से अपने सी कोड को MATLAB से जोड़ने का प्रयास कर रहा हूं, और मुझे डर है कि मैं काफी उलझन में हूं। विशेष रूप से, मैं जानना चाहता हूं कि मैं अपने उपयोगकर्ता द्वारा परिभाषित डेटा प्रकारों का उपयोग कर सकता हूं (जैसे नीचे दिए गए उदाहरण में व्यक्ति संरचना)। मैं दस्तावेज में कुछ भी नहीं आया है ताकि यह सुझाव दिया जा सके कि मैं कर सकता हूं, लेकिन अगर यह अनुमति नहीं दी गई तो यह दुर्भाग्यपूर्ण होगा! यहाँ है कि मैं क्या एक प्रवेश द्वार समारोह के रास्ते में है:MATLAB मेक्सिको फ़ंक्शन
void makePeople(int* A, int* B, Person* people)
{
int MANHATTAN, BRONX, BROOKLYN, QUEENS, STATEN;
int i, j, k, p, q, n;
int count, home, work, mode;
double* loc1;
double* loc2;
Person oPerson;
n = 5;
count = 0;
MANHATTAN = 1;
BRONX = 2;
BROOKLYN = 3;
QUEENS = 4;
STATEN = 5;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
for (k = 1; k <= 2; k++)
{
if (k == 1)
q = A[n*i+j];
else
q = B[n*i+j];
for (p = 1; p < q; p++)
{
home = i;
work = j;
mode = k;
if (home == MANHATTAN)
{
loc1[0] = 2.4;
loc1[1] = 2.4;
loc2[0] = 3.7;
loc2[1] = 3.4;
}
else
{
loc1[0] = 3.4;
loc1[1] = 4.4;
loc2[0] = 3.7;
loc2[1] = 3.4;
}
oPerson = Person_new(home, work, mode, loc1, loc2);
people[count] = oPerson;
count++;
}
}
}
}
return;
}
अंत में, यहाँ person.h है:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
int *inA;
int *inB;
const mxArray *people;
const char *fieldnames[5];
int numFields, i;
inA = (int *) mxGetPr(prhs[0]);
inB = (int *) mxGetPr(prhs[1]);
numFields = 5;
fieldnames[0] = "home";
fieldnames[1] = "work";
fieldnames[2] = "mode";
fieldnames[3] = "loc1";
fieldnames[4] = "loc2";
people = mxCreateStructMatrix(1000, 1, numFields, fieldnames);
for (i = 0; i < numFields; i++)
{
mxSetField(people,i,fieldnames[i],mxDuplicateArray(prhs[2]));
}
makePeople(inA, inB, people);
}
मेरे makePeople समारोह नीचे परिभाषित किया गया है फ़ाइल:
#ifndef PERSON_INCLUDED
#define PERSON_INCLUDED
typedef struct Person_str *Person;
Person Person_new(int home, int work, int mode, double* loc1, double* loc2);
#endif
किसी भी मदद की सराहना की जाएगी!