mwArray類說明 - [Matlab VC環境下編程],有須要的朋友能夠參考下。編程
mwArray是一個C/C++類的類型,而mxArray是C語言的類的類型函數
mwArray() 建立空的Matlab陣列,類型爲mxDOUBLE_CLASSspa
mwArray(mxClassID mxID) 建立mxID指定類型的Matlab陣列索引
mwArray(mwSize num_strings,const char**str)建立字符型陣列,字符串由str指定字符串
mwArray(mwSize num_rows,mwSize num_cols,mx_ClassID mxID,mxCompleixity complex=mxREAL) 建立行數爲num_rows,列數爲num_cols,類型爲mxID的Matalb陣列,對於數值型陣列,將complx作爲最後一個參數,肯定待建立陣列是否爲複數陣列string
mwArray(mwSize num_rows,mwSize num_cols,int num_fields,const char**fieldnames)建立行數爲num_rows,列數爲num_cols結構體陣列,結構體域名爲由fieldnames指定,域名個數由num_fields指定域名
mwArray(mwSize num_dims,const mwSize*dims,mxClassID mxID,mxComplexity cmplx=mxREAL)建立任意維數的Matlab陣列,維數由num_dims指定,各維大小由dims指定,mxID指定陣列的類型。對於數值型陣列,將cmplx做爲最後的一個參數,肯定待建立陣列是否爲復型的陣列。it
mwArray(mwSize num_dims,const mwSize *dims,int num_fields.const char**fieldnames)建立任意維數的結構體陣列,維數由num_dims指定,各維大小由dims指定,結構體域名由fieldnames指定,域名個數由num_fields指定io
mwArray(const mwArra&arr)根據當前的陣列arr中建立一個新的陣列(複製)序列化
mwArray(const char*str) 根據字符串str建立一個新的字符型陣列
mwArray(re,im)建立一個新的數值陣列,實部爲re,虛部爲im
mwArray(re)建立一個新的數值陣列,實部爲re.
mwSize NumberOfNonZeros()const 返回稀疏陣列非零元素的個數
mwSize NumberOfElements()const 返回陣列中元素的個數
mwSize NumberofDimensions()const 返回陣列維數
mwSize MaximumNonZeros()const 返回稀疏陣列中最大的元素的個數
mwArray SharedCopy()const 返回一個新的共享數據型mwArray陣列,此陣列與現有的mwArray陣列指向同一個數據塊。
mwArray Serialize()const 將mwArray序列化一個新的陣列,新的陣列爲mxUINT8_CLASS類型
mwArray RowIndex()const 返回陣列元素的行索引;對於稀疏陣列,只返回非零原素的行索引例如
mwArray a(2,3,mxDOUBLE_CLASS); mwArray rows=a.RowIndex();
mwArray Real() 返回數值陣列的實部 例如
double rdata[4]={1.0,2.0,3.0,4.0};double idata[4]={10.0,20.0,30.0,40.0};
mwArray a(2,2,mxDOUBLE_CLASS,mxCOMPLEX);
a.Real().SetData(rdata,4);
a.Imag().SetData(idata,4);
mwArray Image() 返回數值陣列虛部
mwArray Get(mwSize num_indices,....)根據索引返回陣列元素,其中num_indices表示索引數目。Get函數中輸入的索引均從1起始。例如
double data[4]={1.0,2.0,3.0,4.0};
mwArray a(2,2,mxDOUBLE_CLASS);
double x;
a.SetData(data,4);
x=a.Get(2,2,2);//返回4
x=a.Get(1,3);//返回3
mwArray Get(const char *name, mwSize num_indices,...) 返回結構體域名爲name,指定索引的結構體域,其中num_indices表示索引的數目。Get函數中輸入的索引均從1起始。例如
const char* fields[]={"a","b","c"};
mwArray a(1,1,3,fields); //b=a(1).a;
mwArray b=a.Get("a",1,1);//b=a(1,1).b;
mwArray b=a.Get("b",2,1,1);
mwArray ColumnIndex() const 返回陣列元素的列索引;對於稀疏陣列,只返回非零元素的列索引。例如
mwArray a(3,2,mxDOUBLE_CLASS);
mwArray rows=a.RowIndex();
int NumberOfFields() const 返回結構體域個數
int ElementSize() const 返回mwArray陣列元素大小
int CompareTo(const mwArray& arr)const 對比兩個mwArray陣列
bool IsSparse()const 判斷是否Sparse陣列
bool IsNumeric()const 判斷是不是數值陣列
bool IsEmpty()const 判斷是不是空陣列
bool IsComplex()const 判斷是否復型陣列
bool Equals(const mwArray& arr)const 判斷兩個陣列是否相同
operate()const 強制轉換爲其餘類型 例如
double data[4]={1.0,2.0,3.0,4.0};
double x;
mwArray a(2,2,mxDOUBLE_CLASS);
a.SetData(data,4);
x=double a(1,1);
mwArray &operator=(const& x) 賦值操做符 例如
mwArray a(2,2,mxDOUBLE_CLASS);
a(1,1)=1.0;
mwArray operator()(mxIndex i1,mxIndex i2,mwIndex i3,...)索引操做符
例如 double data[4]={1.0,2.0,3.0,4.0};
double x;
mwArray a(2,2,mxDOUBLE_CLASS);
setData(data,4);
x=a(1,1);
mwArray operator(const char* name,mwIndex i1,mwIndex i2,mwIndex i3,....) 結構體域索引操做符.
例如
const char* fields[]={"a","b","c"};
int index[2]={1,1};
mwArray a(1,1,3,fields);
mwArray b=a("a",1,1);