到目前为止,从我所阅读的内容来看,此错误可能是由程序中的混淆或冗余命名引起的,但我认为这不是问题所在,因为所有内容都已明确声明。从我可以看到,我的问题来自分段声明,该声明随后通过下面的集成运行,因此程序试图访问一个不存在的数组单元。如果是这种情况,到目前为止,我一直对如何解决这个问题感到困惑。对此问题的任何帮助将不胜感激。
syms t k n
fct = @(t)evalin(symengine,['subs(piecewise([0 <= t and t < 2,',...
'sin((Pi*t^2)/4)],[t <= 2 and t < 3, 5*t-t^2-6], [t <=3 and t < 4, 0],',...
'[Otherwise, t-4]),t=',regexprep(mat2str(x),' ',','),')']);
evalin(symengine,'assume(k,Type::Integer)');
a = @(fct,t,k) int(fct*cos(k*pi*t/4)/4,t,-2,8);
b = @(fct,t,k) int(fct*sin(k*pi*t/4)/4,t,-2,8);
FourierSeries = @(fct,t,n) a(fct,t,0)/4 + ...
symsum(a(fct,t,k)*cos(k*pi*t/4) + b(fct,t,k)*sin(k*pi*t/4),k,1,n);
pretty(FourierSeries(t,25,1))
ezplot(FourierSeries(t,25,1),-2,8)
hold on
ezplot(fct,-2,8)
hold off
title('Partial sum with n=25')
完整的错误文本如下:
???尝试去引用非结构数组字段。
==> sym.int 中的错误 56 r = mupadmex('symobj::intdef',fs,xs,as,bs);
==> @(fct,t,k)int(fct*cos(k*pi*t/4)/4,t,-2,8) 中的错误
==> @(fct,t,n)a(fct,t,0)/4+symsum(a(fct,t,k)*cos(k*pi*t/4)+b(fct, t,k)*sin(k*pi*t/4),k,1,n)
==> FourierProgram 中的错误 16 pretty(FourierSeries(t,25,1))