2013-02-15 111 views
0

我一直在試圖在matlab中顯示an和bn fourier係數,但沒有成功,我能夠顯示a0,因爲這不是迭代的一部分。使用matlab數值積分的傅立葉係數

,我將非常感謝您的幫助,下面是我的代碼

syms an; 
syms n; 
syms t; 
y = sym(0); 
L = 0.0005; 
inc = 0.00001; % equally sample space of 100 points 

an = int(3*t^2*cos(n*pi*t/L),t,-L,L)*(1/L); 
bn = int(3*t^2*sin(n*pi*t/L),t,-L,L)*(1/L); 
a0 = int(3*t^2,t,-L,L)*(1/L); 
a0 = .5 *a0; 

a0=a0 

for i=1:5 
    y = subs(an, n, i)*cos(i*pi*t/0.0005) 
    z = subs(bn, n, i)*sin(i*pi*t/0.0005) 
end 
+0

matlab檢索到的錯誤是什麼? – fpe 2013-02-16 10:58:29

+0

,您能否向我們提供預期結果清單? – fpe 2013-02-16 11:05:03

回答

1

如果你的問題中說的一切是正確的,我會傾向於解決這樣說:

clc, clear all,close all 

L = 0.0005; 
n = 5; 
an = zeros(1,n); 
bn = zeros(1,n); 

for i = 1:5  
    f1 = @(t) 3.*(t.^2).*cos(i.*pi.*t./L); 
    f2 = @(t) 3.*(t.^2).*sin(i.*pi.*t./L); 
    an(i) = quad(f1,-L,L).*(1./L); 
    bn(i) = quad(f2,-L,L).*(1./L); 
    a0 = .5.*quad(@(t) 3.*t.^2,-L,L).*(1./L); 
end 

希望這有助於。

+0

謝謝...看起來像我所需要的,結果似乎接近我所期望的,同時我編輯了原始代碼,因爲我忘記了包括同樣的樣本空間點。 – Ola 2013-02-16 23:10:52

+0

預期結果:我希望能夠改變同樣的樣本空間並使用matlab數值計算來計算百分比誤差值。 – Ola 2013-02-16 23:12:34

+0

如果答案符合您的期望,您可以考慮將其證明爲正確的答案 – fpe 2013-02-17 08:52:48