📄 exn536.m
字号:
%《MATLAB及其在理工课程中的应用指南》(十一五规划版)第五章例5-3-6程序
% 在[-pi,pi]区间内任意函数的傅立叶级数展开
% 西安电子科技大学出版社出版 陈怀琛编著 2007年7月
%
clear,clf,format compact,format short
x=linspace(-pi,pi,1001);dx=2*pi/1000;; % [-pi,pi]内长为1001的x数组步长
f=input('输入f=(长度为1001点的数组) '); % 用户输入长为1001的f数组
if isempty(f) error('未给出函数数组'), end
n=input('傅立叶系数的阶数n= ') % 用户给出所需傅立叶系数的阶数
if isempty(n) n=9, end % 若不给出阶数,按9阶计算
a0=trapz(f)/pi*dx % 计算傅立叶系数a0
disp(' k a(k) b(k)') % 给出表头
for k=1:n
a(k)=trapz(f.*cos(k*x))/pi*dx; % 计算傅立叶系数a(k)
b(k)=trapz(f.*sin(k*x))/pi*dx; % 计算傅立叶系数b(k)
disp([k,a(k),b(k)]) % 显示各阶系数
end
pause,disp('求这些傅立叶系数构成的级数的波形')
pause,f1=a0/2*ones(size(x)); % 以a0为基础,构造傅立叶级数
for k=1:n
f1=f1+a(k)*cos(k*x)+b(k)*sin(k*x); % 累加各项傅立叶级数
end
subplot(1,2,2),plot(x,f1,'linewidth',2), % 画出傅立叶级数的波形
v=axis;grid on
subplot(1,2,1),plot(x,f,'linewidth',2) % 画出原输入函数的波形
axis(v),grid on,shg
set(gcf,'color','w')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -