주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

배열 전달하기 예제

R2026a

print2darray 함수

shrlibsample 라이브러리의 print2darray 함수는 3개의 열과 가변 개수의 행을 갖는 2차원 배열의 값을 표시합니다. my2d 파라미터는 double형의 2차원 배열입니다. len 파라미터는 행 개수입니다.

EXPORTED_FUNCTION void print2darray(double my2d[][3],int len)
{
    int indxi,indxj;
    for(indxi=0;indxi<len;++indxi) 
    {
        for(indxj=0;indxj<3;++indxj)
        {
            mexPrintf("%10g",my2d[indxi][indxj]);
        }
        mexPrintf("\n");
    }
}

MATLAB 배열을 C 스타일 차원으로 변환하기

이 예제에서는 MATLAB® 배열에 열 우선 방식으로 저장된 데이터를, 행 우선 형식을 가정하는 C 함수에 전달하는 방법을 보여줍니다.

print2darray 함수가 포함된 라이브러리를 불러옵니다.

if not(libisloaded('shrlibsample'))
    addpath(fullfile(matlabroot,'extern','examples','shrlib'))
    loadlibrary('shrlibsample')
end

4개의 행과 3개의 열을 갖는 MATLAB 배열을 만듭니다.

m = reshape(1:12,4,3)
m = 4×3

     1     5     9
     2     6    10
     3     7    11
     4     8    12

값을 표시합니다. 첫 번째 열이 [1 2 3 4]가 아닌 [1 4 7 10]입니다.

calllib('shrlibsample','print2darray',m,4)
         1         2         3
         4         5         6
         7         8         9
        10        11        12
ans = 4×3

     1     5     9
     2     6    10
     3     7    11
     4     8    12

m을 전치하여 원하는 결과를 얻습니다.

calllib('shrlibsample','print2darray',m',4)
         1         5         9
         2         6        10
         3         7        11
         4         8        12
ans = 3×4

     1     2     3     4
     5     6     7     8
     9    10    11    12

multDoubleArray 함수

shrlibsample 라이브러리의 multDoubleArray 함수는 배열의 각 요소에 3을 곱합니다. 이 함수는 단일 첨자(선형 인덱싱)를 사용하여 입력 배열을 탐색합니다.

EXPORTED_FUNCTION void multDoubleArray(double *x,int size)
{
    /* Multiple each element of the array by 3 */
    int i;
    for (i=0;i<size;i++)
    *x++ *= 3;
}

MATLAB® 함수 시그니처는 다음과 같습니다.

반환 유형이름인수
doublePtrmultDoubleArray(doublePtr,
int32)

3차원 MATLAB 배열 유지하기

이 예제에서는 C 함수가 MATLAB® 배열의 차원을 변경하는 방법과 배열의 형태를 복원하는 방법을 보여줍니다.

라이브러리를 불러옵니다.

if not(libisloaded('shrlibsample'))
    addpath(fullfile(matlabroot,'extern','examples','shrlib'))
    loadlibrary('shrlibsample')
end

2×5×2 입력 배열을 만들고 이 배열의 차원을 표시합니다.

vin = reshape(1:20,2,5,2);
vs = size(vin)
vs = 1×3

     2     5     2

multDoubleArray를 호출하여 각 요소를 곱합니다. 출력 배열의 차원을 표시합니다.

vout = calllib('shrlibsample','multDoubleArray',vin,20);
size(vout)
ans = 1×2

     2    10

원래 형태를 복원합니다.

vout = reshape(vout,vs);
size(vout)
ans = 1×3

     2     5     2