#matlab #matrix #signal-processing #fft
#matlab #матрица #обработка сигналов #БПФ
Вопрос:
http://www.mathworks.com/help/techdoc/ref/fftshift.html
Если вы проверите эту ссылку — это то, что я хочу сделать на первом рисунке — поменять местами квадранты матрицы.
Однако, похоже, я не могу придумать хорошего способа сделать это без нескольких циклов для извлечения соответствующих подматриц.
Мне это нужно для работы с матрицами MxN, где M и N могут быть любой комбинацией четных и нечетных значений.
Спасибо
Комментарии:
1. почему вы не можете использовать
fftshift
? Это домашнее задание?2. Вы пробовали
open fftshift
?3. Я не хочу использовать fftshift, потому что я переношу часть matlab на C
Ответ №1:
Должно сработать следующее
sz = ceil(size(A)/2)
A = A([sz(1) 1:end, 1:sz(1)], [sz(2) 1:end, 1:sz(2)])
Это работает только для 2d-матриц, но может быть легко обобщено на случай Nd.
Ответ №2:
Если вы введете type fftshift.m
в командной строке MATLAB, вы увидите исходный код для реализации функции MATLAB в MATLAB (используйте edit fftshift.m
, если хотите просмотреть его в редакторе с подсветкой синтаксиса). Я не публикую код здесь, поскольку он защищен авторским правом. Однако вы можете попробовать это на своем компьютере и повторно реализовать то же самое в C. Вам решать разобраться с условиями лицензии и т.д., Если вам что-то из этого нужно.