所以我試圖讓計算傅立葉級數,並繪製它.m文件,但我一直收到錯誤我如何解決「下標指數必須是真正的正面」?
Subscript indices must either be real positive integers or logicals.
我已經找到了其中的代碼錯誤的位置,但我沒有想法如何解決這個問題,你能幫我理解這個錯誤嗎?
當我嘗試在sum(a0)
中總結我的功能時發生錯誤。
我的代碼:
syms k x
f = [...
cos(x)
];
a = [... % Hele perioden
-pi pi;
];
sum = [2 5 20]; % N - Antal af Fourie-skridt.
%% Fourie Koeffiecienter
for i = 1:length(f)
a0(i) = int(f(i),x,a(i,:)); %a_0 findes
ak(i) = int(f(i)*cos(k*pi*x/max(a(:))),x,a(i,:)) ; %a_k findes
bk(i) = int(f(i)*sin(k*pi*x/max(a(:))),x,a(i,:)) ; %b_k findes
end
a0 = 1/(2*max(a(:))) * sum(a0);
ak = 1/(max(a(:))) * sum(ak);
bk = 1/(max(a(:))) * sum(bk);
%% Summen for 3 forskellige N
x = linspace(a(1,1),max(a(:)),25); %linspace til x for hele perioden.
fsum_1 = a0 + symsum(ak*cos(k*pi*x/max(a(:))) + bk*sin(k*pi*x/max(a(:))),k,1,sum(1,1));
fsum_2 = a0 + symsum(ak*cos(k*pi*x/max(a(:))) + bk*sin(k*pi*x/max(a(:))),k,1,sum(1,2));
fsum_3 = a0 + symsum(ak*cos(k*pi*x/max(a(:))) + bk*sin(k*pi*x/max(a(:))),k,1,sum(1,3));%F.R sum
%% plot
subplot(3,1,1)
plot(x,fsum_1)
title(['Fourierække ved n =',num2str(sum(1,1))])
subplot(3,1,2)
plot(x,fsum_2)
title(['Fourierække ved n =',num2str(sum(1,2))])
subplot(3,1,3)
plot(x,fsum_3)
title(['Fourierække ved n =',num2str(sum(1,3))])
很好的回答。 MATLAB真的不應該允許覆蓋內置函數,這將節省大約147個問題:) – Adriaan
Thanks @Adriaan!我敢打賭這比147多得多!並非所有人都設法在錯誤信息中提出問題。而且,我其實不同意你的看法。在Mathworks決定創建一些函數的時候,你會突然產生許多毫無價值的代碼。 'my_sum','abs_val','res','results' +++。編輯器中的警告將會很好,儘管=) –
嗯,他們可以禁止它,並顯示與當前「將在未來版本中刪除」的函數相同的警告。無論如何,警告會很好。 – Adriaan