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?
Спасибо за помощь!