반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

5*5행렬에 3*3필터 적용하기 본문

[IT]/C++

5*5행렬에 3*3필터 적용하기

givemebro 2020. 3. 12. 10:53
반응형
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void matMaker(int mat1[5][5], int mat2[3][3]) {
	int num = 1;
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			mat1[i][j] = i * 5 + j;
			if (i < 3 && j < 3) {
				mat2[i][j] = num % 2;
				num++;
			}
		}
	}
}
void matmul(int mat1[5][5], int mat2[5][5], int result[5][5]) {
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			result[i][j] = mat1[i][j] * mat2[i][j];
		}
	}
}
void matprinter5(int result[5][5]) {
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			printf("  %4d", result[i][j]);
		}
		puts("");
	}
	puts("");
	puts("");

}void matprinter3(int result[3][3]) {
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			printf("  %4d", result[i][j]);
		}
		puts("");
	}
	puts("");
	puts("");

}
void matFil(int mat1[5][5], int mat2[3][3],int result2[3][3]) {
	for (int i = 0; i < 3; i++) {
		for (int a = 0; a < 3; a++) {
			// 메트릭스 위에서 움직이는 용도

			//필터 적용 용도
			for (int j = 0; j < 3; j++) {
				for (int k = 0; k < 3; k++) {
					result2[i][a] += mat1[j+i][k+a] * mat2[j][k];
				}
			}
		}
	}
}
int main() {
	int mat1[5][5], mat2[3][3], result1[5][5], result2[3][3];
	memset(result2, 0, sizeof(result2));
	matMaker(mat1, mat2);
	matFil(mat1, mat2, result2);
	matprinter5(mat1);
	matprinter3(mat2);

	matprinter3(result2);

	return 0;
}

반응형

'[IT] > C++' 카테고리의 다른 글

C.섭씨를 화씨로 변환하는 프로그램  (0) 2021.03.18
우분투 단축키 설정  (0) 2020.03.16
리눅스 기초  (0) 2020.03.16
배열을 이용한 행렬곱  (0) 2020.03.12
void pointer를 활용한 함수(function)  (0) 2020.03.12
구조체 안에서 함수 사용하기  (0) 2020.03.11
memset / memcpy 활용  (0) 2020.03.11
strtok의 활용  (0) 2020.03.11
Comments