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