Операции с массивами в MATLAB и Python

1

Я пытаюсь преобразовать фрагмент кода MATLAB в python. Код MATLAB - это

    for o = 1:orient            
        for s = 1:scale

            M(:,:,s) = ifft2(imfft .* filter{s,o});

            s_lc(:,:,o) = s_lc(:,:,o).*(M(:,:,s).^w(s));

        end

    end

Где, orient = 8, scale = 3, w = [1, -3, 2], imfft = imfft2 (изображение), 'filter' - это массив ячеек с матричными элементами, каждая матрица имеет размер "изображения",

Я написал эквивалентный код в python, который выглядит,

for o in range(orient):
    for s in range(scale):
        M[:,:,s] = np.fft.ifft2 (imfft * filter[s][o])
        s_lc[:,:,o] = (s_lc[:,:,o])*((M[:,:,s])**w[s])

здесь все входные переменные сохраняют те же значения сохранения, что и для MATLAB. Но значение s_lc не совпадает с значением MATLAB после полных итераций.

Может ли кто-нибудь помочь мне с воспроизведением той же функциональности MATLAB в Python для вышеуказанного фрагмента кода?

Теги:
arrays

1 ответ

0

Я думаю, что вы делаете совершенно правильно. Однако MATLAB и numpy выражают многомерные массивы по-разному. Если вы используете ранга 3, сравните s_lc[i,j,k] python и s_lc(i+1,j+1,k+1) элемента MATLAB.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню