Matlab 周期方波信号傅里叶级数展开

方波信号为:

傅里叶级数展开为:

程序运行结果:

程序代码:

 1 clear
 2 
 3 x = -6:0.01:6;
 4 T = 4;
 5 
 6 f = x;
 7 for N = 1:length(f)
 8     temp = rem(abs(x(N)),T);
 9     if temp>1 && temp<3
10         f(N) = 0;
11     else
12         f(N) = 1;
13     end
14 end
15 
16 % f(x) = 1/2 + sum(g(k,x))   (k=1,2,3,4......)
17 % g(k,x) = sinc(k/2)*cos(k*pi/2*x)
18 % MATLAB build-in function: sinc(x) = sin(x*pi)/(x*pi)
19 
20 count = 9;
21 y = zeros(count, length(x));
22 
23 for N = 1:count
24     k = 2*N-1;
25     if N==1
26         y(N,:) = 0.5 + sinc(k/2)*cos(k*pi/2*x);
27     else
28         y(N,:) = y(N-1,:) + sinc(k/2)*cos(k*pi/2*x);
29     end    
30 end
31 
32 row = ceil(sqrt(count));
33 colomn = ceil(count/row);
34 for N=1:count
35     subplot(row,colomn,N);
36     plot(x,f,'k');
37     hold on
38     h = plot(x,y(N,:),'r');
39     title(strcat(num2str(2*N-1),' harmonic'));
40 end

 

posted @ 2015-10-16 15:16  平楚荒烟  阅读(11686)  评论(0编辑  收藏  举报