int main()
{
matrix matA ={
{1,2,3},
{4,5,6},
{7,8,9}
};
matrix matB ={
{1,2,3},
{1,2,3},
{1,2,3}
};
matrix matC = multiply(matA, matB);
for (int i = 0; i<matC.size();++i){
for (int j =0; j<matC[i].size(); ++j){
cout << " " << matC[i][j];
}
cout << "\n";
}
return 0;
}
- 매트릭스 초기화:
- 행렬 C(A.size(), vector<double>(B[0].size(), 0));는 결과 행렬 C를 초기화합니다. A.size()는 행렬 A의 행 수를 제공하고 B[0].size()는 행렬 B의 열 수를 제공합니다. 따라서 C는 A와 동일한 수의 행과 B와 동일한 수의 열을 갖는 빈 행렬로 초기화됩니다.
- 행렬 곱셈:
- 이 코드는 곱셈을 수행하기 위해 세 개의 중첩된 for 루프를 사용합니다.
- 가장 바깥쪽 루프(for (int i = 0; i < A.size(); i++))는 행렬 A의 행을 반복합니다.
- 중간 루프(for (int j = 0; j < B[0].size(); j++))는 행렬 B의 열을 반복합니다.
- 가장 안쪽 루프(for (int k = 0; k < A[0].size(); k++))는 공통 차원(A의 열 수와 B의 행 수)을 반복합니다.
- 이 코드는 곱셈을 수행하기 위해 세 개의 중첩된 for 루프를 사용합니다.
- 행렬 요소 계산:
- 가장 안쪽 루프 내에서 코드는 행렬 A의 i번째 행과 j'의 내적을 수행하여 [i][j]위치에서 결과 행렬C의 각 요소를 계산합니다. 행렬 B의 -번째 열. 이는 C[i][j] += A[i][k] * B[k][j]; 공식을 사용하여 수행됩니다.
- 결과 매트릭스:
- 모든 계산이 완료된 후 결과 행렬 'C'에는 행렬 'A'와 'B'의 곱이 포함됩니다.
- 반품 결과:
- 이 함수는 결과 행렬 'C'를 행렬 'A'와 'B'의 곱으로 반환합니다.
- 결과 인쇄:
- main 함수에서 코드는 두 개의 행렬 matA와 matB를 정의하고 multiply 함수를 호출하여 두 제품의 곱을 계산하고 결과를 matC에 저장합니다.
- 마지막으로 코드는 행렬 matC의 요소를 인쇄하여 결과를 표시합니다.
#include <iostream>
#include <vector> //vector 포맷 사용
using namespace std;
using matrix = vector<vector<double>>;
matrix multiply(matrix A,matrix B)
{
matrix C(A.size(), vector<double>(B[0].size(), 0));
// A가 N by M , B가 M by P 라고 하면 N * P 행렬이 도출됨
for (int i = 0; i<A.size(); i++)
{
for (int j = 0; j < B[0].size(); j++)
{
for (int k = 0; k < A[0].size(); k++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}