在MatLab中实现傅里叶级数的变幅

az31mfrm  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(177)

下面的代码当前绘制N个项的方波的傅里叶级数。有没有办法将范围从[0;1]更改为[-1;1]?

% Assignment of variables
syms t 

% Function variables    
N = 5;
T0 = 1;
w0 = 2*pi/T0;
Imin = 0;
Imax = 0.5;

% Function
ft = 1;

% First term calculation
a0 = (1/T0)*int(ft, t, Imin, Imax);
y = a0;

% Calculation of n terms    
for n = 1:N        
    an = (2/T0)*int(ft*cos(n*w0*t), t, Imin, Imax);    
    bn = (2/T0)*int(ft*sin(n*w0*t), t, Imin, Imax);    
    y = y + an*cos(n*w0*t) + bn*sin(n*w0*t);
end

fplot(y, [-4,4], "Black")
grid on
z9ju0rcb

z9ju0rcb1#

如果你说的是数字刻度,那么ylim([-1 1])

7kqas0il

7kqas0il2#

1.-以下内容符合您的要求:

clear all;clc;close all
syms t 
assume(t>0 & t<1)

% Function variables    
N = 5;
T0 = 1;
w0 = 2*pi/T0;
Imin = 0;
Imax = 1;

% Function
h1=heaviside(t-.5)
h2=heaviside(t+.5)
ht=-2*((h1-h2)+.5)

% First term calculation
a0 = (1/T0)*int(ht, t, Imin, Imax);
y = a0;

% Calculation of n terms    
for n = 1:N        
    an = (2/T0)*int(ht*cos(n*w0*t), t, Imin, Imax);    
    bn = (2/T0)*int(ht*sin(n*w0*t), t, Imin, Imax);    
    y = y + an*cos(n*w0*t) + bn*sin(n*w0*t);
end

fplot(y, [-4,4], "Black")
grid on

2.-分配一组以%Function开头的特定代码行以精确定义函数。
然而,你实际上是用伊明和IMAX来定义函数的。
最好将函数定义限制在您打算用于此类目的的行中,而不是将函数分散在各处。

相关问题