2d матричная свертка с использованием 1d массивов в c - PullRequest
0 голосов
/ 30 января 2019

Мне нужно выполнить 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...