matlab傅里叶级数方波
时间: 2023-10-29 15:07:51 浏览: 210
Matlab中可以使用不同的方法来实现傅里叶级数展开方波。一种方法是使用数值法,通过循环和数值积分(trapz函数)来计算傅里叶系数。另一种方法是使用矩阵计算,通过矩阵运算和积分来计算傅里叶系数。还有一种方法是使用符号法,通过符号积分(int函数)来计算傅里叶系数。
使用数值法实现傅里叶级数展开方波的代码如下:
```Matlab
clear; clf;
T = 2; f = 1/T; w1 = 2*pi*f;
dt = 0.01; t = -2:dt:2; tao = -0.5:dt:0.5;
a0 = trapz(tao,tao.^0)/T; f = a0;
N = input('N=');
an = zeros(1,N); bn = zeros(1,N);
for n = 1:N
fcos = 1.*cos(n*w1*tao);
an(n)=trapz(tao,fcos)*2/T;
fsin = 1.*sin(n*w1*tao);
bn(n)=trapz(tao,fsin)*2/T;
f = f + an(n)*cos(n*w1*t) + bn(n)*sin(n*w1*t);
end
plot(t,f);
xlabel('t(s)'); ylabel('ft');
grid on; title(['Numeric Loop with N=' num2str(N)]);
```
使用矩阵计算实现傅里叶级数展开方波的代码如下:
```Matlab
clear; clf;
T = 2; f = 1/T; w1 = 2*pi*f;
dt = 0.01; t = -2:dt:2; tao = -0.5:dt:0.5;
a0 = trapz(tao,tao.^0)/T;
N = input('N='); n = 1:N;
fcos = 1.*cos(n'*w1*tao);
an = trapz(tao,fcos,2)*2/T;
fsin = 1.*sin(n'*w1*tao);
bn = trapz(tao,fsin,2)*2/T;
f = a0 + an'*cos(n'*w1*t) + bn'*sin(n'*w1*t);
plot(t,f);
xlabel('t(s)');ylabel('ft');
grid on; title(['Numeric Matrix with N=' num2str(N)]);
```
使用符号法实现傅里叶级数展开方波的代码如下:
```Matlab
clear; clf;
N = input('N='); syms t1 a0 an bn n T1 = 2; f = 1/T1; w1 = 2*pi*f; range = [-0.5,0.5];
a0 = 1/T1*int(t1^0,t1,range); f = a0;
for n=1:N
an = 2/T1*int(cos(n*w1*t1),t1,range);
bn = 2/T1*int(sin(n*w1*t1),t1,range);
f = f + an*cos(n*w1*t1) + bn*sin(n*w1*t1);
end
fplot(f);
xlabel('t');ylabel('y(t)');
title(['Symbolic Loop with N=' num2str(N)]);
axis([-2,2,-0.2,1.2]);
grid on;
```
以上是实现傅里叶级数展开方波的不同方法,你可以根据需要选择其中一种方法进行计算。
阅读全文
相关推荐















