傅里叶正弦级数问题:此类型的变量不支持点索引



这是我的代码:

clearvars;
clc; 
close all;
%Define the domain: 
l=1;
%and consider, say, 4 periods
x=linspace(-4,4);
%Define the number of terms to consider
n_tot=50;
%Initialize the vectors containing each term of the series
FSS_term_x=zeros(n_tot,length(x));
%Loop to compute each term of the series up to n_tot
for n=1:n_tot
%n-th term of the series for f(x)=x
FSS_term_x(n,:)=((-2.*l.^2./n.pi).*cos(n.*pi)+2.*(l.^2)./(n.*pi).^2.*(cos(n.*pi)-1)).*sin(n.*pi.*x./l);
%-2.*l./(n.*pi).*cos(n.*pi).*sin(n.*x.*pi/l);
end
%Add up all the terms of the series
FS_y=sum(FSS_term_x,1);
%Plot the series
figure
plot(x,FS_y)

这是错误消息:

Dot indexing is not supported for variables of this type.
Error in untitled3 (line 16)
FSS_term_x(n,:)=((-2.*l.^2./n.pi).*cos(n.*pi)+2.*(l.^2)./(n.*pi).^2.*(cos(n.*pi)-1)).*sin(n.*pi.*x./l);

发生此错误是否因为我尝试绘制的傅里叶正弦级数是分段平滑的?

任何反馈不胜感激!

最好

RK

您在for循环中的表达式中错过了乘号 (*(。它涉及 rhs 上第一个括号内的术语:在您的代码中,它说(-2.*l.^2./n.pi)(注意末尾的n.pi(,而它应该是(-2.*l.^2./n.*pi)

因此,for循环中的表达式应该是:

FSS_term_x(n,:)=((-2.*l.^2./n.*pi).*cos(n.*pi)+2.*(l.^2)./(n.*pi).^2.*(cos(n.*pi)-1)).*sin(n.*pi.*x./l);
%-2.*l./(n.*pi).*cos(n.*pi).*sin(n.*x.*pi/l);

最新更新