Вы делаете ошибку в том, что вы зацикливаете, вы на самом деле не хотите зацикливаться с течением времени, но за k
. Прямо сейчас вы зацикливаетесь на i
(который представляет время из контекста), но вы даже не используете i
.
Таким образом, правильным способом было бы зациклить k
и установить максимальное число включаемых коэффициентов Фурье, например:
series = 0;
t = -1:0.0001:1;
k_max = 10;
for k = 0:k_max
F = 4/pi*((1/(2*(k) + 1)).*sin((2*(k)+1).*pi.*t));
series = series + F;
end
plot(t,series)
Вы можете сравнить, что происходит, когда вы добавляете больше коэффициентов, изменив k_max
:
В Matlab, как правило, быстрее избегать использования циклов for
, что можно сделать с помощью векторизации. Если вы укажете t
в качестве вектора строки, а вектор k
в качестве вектора столбца, вы можете вычислить F
для каждого k
, а затем сложить его по первому измерению, чтобы получить ряд:
t = -1:0.0001:1;
k = (0:10).';
F = 4/pi.*((1./(2.*(k) + 1)).*sin((2*(k)+1).*pi.*t));
series = sum(F, 1);