私が読んだこととはかけ離れて、このエラーはプログラム内の紛らわしいまたは冗長な命名によって引き起こされる可能性がありますが、すべてが明確に宣言されているため、ここでは問題ではないと思います。これで私が見ることができることから、私の問題は、以下の統合によって実行される区分的な宣言から来ているため、プログラムは存在しない配列セルにアクセスしようとしています。この場合、私はこれまでのところ、この問題を修正する方法に困惑しています。この問題に関するご支援をいただければ幸いです。
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)
==> 16 の FourierProgram のエラー pretty(FourierSeries(t,25,1))