我的学习项目有问题。 这里有 formulas我必须在Octave中实现。 首先称为FCzase,第二个是FSzereg。两者都应该给出相同的输出,但正如您在图上看到的here,它们是不同的。 FSzereg出了点问题。请有人帮助我找到我的错误吗?
U = 1; #voltage
T = 0.1; #period
f = 1/T; #frequency
n = 30; #number of samples
m = 30; #number of components in Fourier function
F1 = 0;
F2 = 0;
t= -T/2: T/n :T/2 - T/n + 2*T;
w = 2*pi*f;
for i = 1 : n
if t(i) < 0
FCzasu(i) = -4*U*t(i)^2/T^2;
else
FCzasu(i) = 4*U*t(i)^2/T^2;
endif
endfor
FCzasu = [FCzasu FCzasu FCzasu];
for i = 2 : m
F1 = F1 + (-1)^(i-1) * sin(i*w*t)/i;
endfor
for i = 1 : 2*m : 2
F2 = F2 + sin(i*w*t)/i^3;
endfor
FSzereg = (2*U/pi)*(sin(w*t) + F1) - (8*U/(pi^3))*F2;
FFTSzereg = abs(fft(FSzereg));
FFTCzasu = abs(fft(FCzasu));
k=0 : 1 : 3*n-1 ;
fre = k * f/3;
subplot(2,2,1)
plot(t, FCzasu)
xlabel('Czas [s]');
ylabel('Napiecie [V]')
subplot(2,2,2)
stem(fre, FFTCzasu,'.')
title('{\bf Widmo}');
grid on;
xlabel('Czestotliwosc [Hz]');
ylabel('Amplituda [V]')
subplot(2,2,3)
plot(t, FSzereg)
xlabel('Czas [s]');
ylabel('Napiecie [V]')
subplot(2,2,4)
stem(fre, FFTSzereg,'.')
title('{\bf Widmo}');
grid on;
xlabel('Czestotliwosc [Hz]');
ylabel('Amplituda [V]')