При использовании функции подбора максимальное число терминов, которое можно сделать с помощью подбора Фурье в MATLAB, составляет 8:
f = fit(xs,ys,'fourier8')
К сожалению, 8-членная серия не собирается сокращать его длямои цели.Цель состоит в том, чтобы согласовать набор данных с моделью Фурье и извлечь коэффициенты, и коэффициенты должны быть как можно более точными для последующего анализа.Мне было интересно, если у кого-нибудь было представление о том, как изменить существующую функцию подгонки, используя:
fitoptions('fourier8')
, которая создала бы n-членный ряд Фурье, где n - число членов (конечное число).Если это неосуществимо, как можно написать программу, которая создает n-членный ряд Фурье (конечный) с извлекаемыми коэффициентами, используя общую формулу, показанную на рисунке ниже ПРИМЕЧАНИЕ. СВЯЗИ НЕ БУДЕТ INF И БУДЕТ ВМЕСТОBE n . ![enter image description here](https://i.stack.imgur.com/Ms2tT.jpg)
Обновление: я нашел код, который принимает известные коэффициенты, но как это можно отрегулировать, чтобы он активно настраивал / точно настраивал коэффициенты дляПронумерованные термины, когда они не известны ранее?Кроме того, как можно найти верхнюю и нижнюю границы для периода (так как они являются входными данными для этого сценария)?
a0 = input('a0: ');
an = input('an: ');
bn = input('bn: ');
a = input('lower boundary: ');
b = input('upper boundary: ');
t = linspace(a,b,10000); % note: this is just for testing the code
suma =0;
for n=1:100
ebn = evalin('caller',bn);
ean = evalin('caller',an);
suma = suma + (ean.*cos(2.*n.*pi.*t./(b-a)) + ebn.*sin(2.*n.*pi.*t./(b-a)));
end
series = a0 + suma;
plot(t,series)