Мне нужно выполнить 2d матричную свертку, но я использовал 1d массивы для хранения матриц.Эти 1d-массивы имеют размер NumRows * NumCols
и содержат значения матриц.Я написал следующий код для выполнения двумерной свертки, но я получаю неправильные результаты.Может кто-нибудь помочь мне с тем, что не так?
mat_A is of size NumRows_first * NumCols_first.
mat_B is of size NumRows_second * NumCols_second.
mat_C is the output array of size (NumRows_first + NumRows_second - 1) * (NumCols_first + NumCols_second - 1)
И код, который я написал:
int c_x = NumRows_second / 2;
int c_y = NumCols_second / 2;
int ii = 0;
int jj = 0;
for(i=0; i<(NumRows_first + NumRows_second - 1) * (NumCols_second + NumCols_first - 1); i++)
{
for(j=0; j<(NumRows_first + NumRows_second - 1) * (NumCols_second + NumCols_first - 1); j++)
{
for(int m=0; m<NumRows_second - 1; m++)
{
for(int k=0; k<NumCols_second - 1; k++)
{
ii = i + (m - c_x);
jj = j + (k - c_y);
if(ii >= 0 && ii < NumRows_first && jj>=0 && jj<NumCols_first)
mat_C[i] += mat_A[ii*jj] * mat_B[m*k];
}
}
}
}
Все массивы имеют тип double