본문 바로가기

프로그래밍

C Matrix multiplication with dynamic size(메트릭스 연산)

CPython과 다르게 C에서는 reference를 주고 받으면서 작동하기가 꽤나 어렵습니다. 

함수 내부에서 동적으로 메모리를 할당하고 메트릭스 연산을 한 뒤, 해당 포인터를 반환하면 방식으로 구현하였습니다. 

 

i, j, k 는 행과 열의 크기를 나타냅니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int** mult_mat(int** matA, int** matB, int i, int k, int j) {
 
    // 동적 할당
    int ** matRet = malloc(sizeof(int** i);
    
    // 메트릭스 연산
    for (int a = 0; a < i;a++) {
        matRet[a] = malloc(sizeof(int* j);
        for (int b = 0; b < j; b++) {
            matRet[a][b] = 0;
            for (int c = 0; c < k; c++) {
                matRet[a][b] += matA[a][c] * matB[c][b];
            }
        }
    }
    
    return matRet;
 
cs

 

'프로그래밍' 카테고리의 다른 글

Anaconda Command 정리  (0) 2020.06.12
Cygwin에서 C Drive 찾기  (0) 2020.06.11
CUDA intro  (0) 2020.06.10
Cygwin에서 패키지 다운 받기(gcc, ...)  (0) 2020.06.10
[알고리즘] 어린왕자 10004 파이썬 풀이  (0) 2020.05.16