傅里叶级数展开matlab实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

傅里叶级数展开matlab 实现给个例子说明下:将函数

y=x*(x-pi)*(x-2*pi),在(0,2*pi)的范围内傅里叶级数展开syms x fx=x*(x-pi)*(x-2*pi);

[an,bn,f]=fseries(fx,x,12,0,2*pi)%前12 项展开latex(f)%将f 转换成latex 代码an = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] bn = [ -12, 3/2, -4/9, 3/16, -12/125, 1/18, -12/343, 3/128, -4/ 243, 3/250, -12/1331, 1/144] f =

12*sin(x)+3/2*sin(2*x)+4/9*sin(3*x)+3/16*sin(4*x)+12/ 125*sin(5*x)+1/18*sin(6

*x)+12/343*sin(7*x)+3/128*sin(8*x)+4/243*sin(9*x)+3/ 250*sin(10*x)+12/1331* sin(11*x)+1/144*sin(12*x) ans = 12\,\sin \left( x \right) +3/2\,\sin \left( 2\,x \right)

+4/9\,\sin \left( 3\,x \right) +3/16\,\sin \left( 4\,x \right) +{\frac {12}{125}}\,\sin \left( 5\,x \right) +1/18\,\sin

\left( 6\,x \right) +{\frac {12}{343}}\,\sin \left( 7\,x \right) +{\frac {3}{128}}\,\sin \left( 8\,x \right) +{\frac

{4}{243}}\,\sin \left( 9\,x \right) +{\frac {3}{250}}\,\sin \left( 10\,x \right) +{\frac {12}{1331}}\,\sin \left( 11\,x \right) +{\frac {1}{144}}\,\sin \left( 12\,x \right) function [an,bn,f]=fseries(fx,x,n,a,b) %傅里叶级数展开% %an 为fourier 余弦项系数%bn 为fourier 正弦项系数%f 为展开表达式%f 为给定函数%x 为自变量%n 为展开系

数%a,b 为x 的区间,默认为[-pi,pi] if nargin==3 a=-pi; b=pi; end l=(b-a)/2; if a+b fx=subs(fx,x,x+l+a); end

an=int(fx,x,-l,l)/l; bn=[]; f=an/2; for ii=1:n

ann=int(fx*cos(ii*pi*x/l),x,-l,l)/l;

bnn=int(fx*sin(ii*pi*x/l),x,-l,l)/l; an=[an,ann];

bn=[bn,bnn]; f=f+ann*cos(ii*pi*x/l)+bnn*sin(ii*pi*x/l); end if a+b f=subs(f,x,x-l-a);

end %%%%%%%%%%%%%%%%%%%% 【原创】MATLAB 求解符号表达式数值的方法:subs 函数首先说明一下,使用的函数是subs,如果你已经知道了,就没必要继续往下看了,浪费时间,O(

∩_∩)O 首先是调用格式:R = subs(S) R = subs(S, new) R = subs(S, old, new) 其中S 为符号表达式,默认的是变量x!下面看几个例子,相信大家就是使用了!例1:>> syms x; >> f=x^2; >> subs(f,2) ans = 4 例2:将表达式x^2+y^2 中x 取值为2 >> syms x y; >> f=x^2+y^2; >> subs(f,x,2) ans = y^2 + 4 例3:>> syms x y; >>

f=x^2+y^2; >> subs(f,findsym(f),2) ans = y^2 + 4 其中findsym(f)为查找f 中所有的符号变量例4:同时对两个或多个变量取值求解>> syms a b; subs(cos(a) + sin(b), {a, b}, {sym('alpha'), 2}) ans = sin(2) + cos(alpha) 例5:带入数据的值也可以是数组形式>> syms t a; >>

subs(exp(a*t), 'a', -magic(2)) ans = [ 1/exp(t), 1/exp(3*t)] [ 1/exp(4*t), 1/exp(2*t)]

(注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注)

相关文档
最新文档