clc;
clear all;
close all;
n=input('n=')
T0=0.01;
A=1;
t=[0:0.0001:0.05];
z=square(2*pi*100*t);
x=0;
pi=3.1415926;
w0=2*pi/T0;
for i=1:n
fw(i)=(2*i-1)*w0;
a(i)=4*A/(pi*(2*i-1));
y(i,:)=a(i)*sin(fw(i)*t);
fai(i)=0;
x=x+y(i,:);
figure(1)
a=1:100
subplot(n,1,i);
plot(t,y(i,:));xlabel('时间/s');ylabel('振幅')
title(['方波',num2str(a(i)),'次谐波'])
end;
figure(2);
subplot(2,1,1);
plot(t,z);
xlabel('时间/s');
axis([-0,0.05,-2,2]);
ylabel('振幅')
title('方波')
subplot(2,1,2);
plot(t,x);
xlabel('时间/s');
ylabel('振幅');
title([num2str(a(i)),'次谐波合成图'])
主要是方波的分解和合成,n是输入要分解成几次谐波,后面的就都不太懂了。尤其是那个循环里面。_(:зゝ∠)_