Matlab: используйте fft2 для вычисления дескрипторов Фурье и используйте их в машине опорных векторов

У меня проблема с вычислением дескрипторов Фурье в MATLAB, и я не могу найти решение в Интернете, поэтому я надеюсь, что вы мне поможете.

У меня есть 3 вектора x, y, f, где f=f(x,y). x,y не сортируются по возрастанию или убыванию, а x и y не равноотстоящие и не являются целочисленными значениями.

Я хочу вычислить дескрипторы Фурье и использовать их в механизме опорных векторов (SVM), чтобы различать разные сигналы.

В 1D-примере (при условии f=f(x)) он работает отлично, и я получаю дескрипторы Фурье как вектор.

%% FFT

T    = (x(end)-x(1))/(length(x)-1);

Fs   = 1/T;

L    = length(x); 

NFFT  = 64;

Y_fft = fft(f);

P2 = abs(Y_fft / L);

P1 = P2(1:L/2+1); % <-- These are the Fourier Descriptors?

P1(2:end-1) = 2*P1(2:end-1);

f_fft = Fs*(0:(L/2))/L;

figure;
plot(f_fft, P1);
grid on;

В моем 2D-примере у меня есть некоторые проблемы:

  • fft2 нуждается в Матрице в качестве входных данных, но у меня есть 3 вектора, а x, y не являются целочисленными значениями, поэтому я не могу построить Матрицу из этих 3 векторов: Как я могу решить эту проблему?
  • вывод fft2 также является матрицей без вектора: как я могу извлечь дескрипторы Фурье в вектор, чтобы использовать их в SVM?

Спасибо за помощь!

0 ответов

Другие вопросы по тегам