电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1645|回复: 4
收起左侧

matlab怎么进行超过8阶的傅里叶拟合啊

[复制链接]

594

主题

958

帖子

5093

积分

四级会员

Rank: 4

积分
5093
发表于 2022-9-30 18:58:52 | 显示全部楼层 |阅读模式
8阶以内的用curve fiting里面的东西就行了,超过8阶的怎么办?我想定义一个12阶的fitfype,但这样写出来总是拟合不出来


fo=fitoptions('Method','NonlinearLeastSquares','StartPoint',0.0095*ones(1,26));
fourier12

=fittype('a0+a1*cos(x*w)+b1*sin(x*w)+a2*cos(2*x*w)+b2*sin(2*x*w)+a3*cos(3*x*w)+b3*sin(3*x*w)+a4*cos(4*x*w)+b4*sin(4*x*w)+a5*cos(5*x*w)+b5*sin(5*x*w)+a6*cos(6*x*w)+ b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w)+a8*cos(8*x*w)+b8*sin(8*x*w)+a9*cos(9*x*w)+b9*sin(9*x*w)+a10*cos(10*x*w)+b10*sin(10*x*w)+a11*cos(11*x*w)+b11*sin(11*x*w)+a12*cos(12*x*w)+b12*sin(12*x*w)','independent',{'x'},'options',fo,'coefficients',{'a0','a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11','a12','b1','b2','b3','b4','b5','b6','b7','b8','b9','b10','b11','b12','w'},'dependent',{'f'});


这样写有问题吗?为什么我拟合出来的图像根本不对,下面是拟合结果,另一个是用内置的fourier8拟合的结果。



matlab怎么进行超过8阶的傅里叶拟合啊-1.jpg

matlab怎么进行超过8阶的傅里叶拟合啊-2.jpg
回复

使用道具 举报

579

主题

911

帖子

5007

积分

四级会员

Rank: 4

积分
5007
发表于 2022-9-30 18:59:30 | 显示全部楼层
同求。不知道工具箱里面拟合的代码是什么。我根据求出傅里叶系数来进行拟合的结果跟工具箱拟合的差别很大。同阶的时候,根据傅里叶系数公式算出的系数都跟工具箱拟合的系数完全不一样。
回复 支持 反对

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2022-9-30 19:00:03 | 显示全部楼层
同问啊
回复 支持 反对

使用道具 举报

585

主题

910

帖子

4977

积分

四级会员

Rank: 4

积分
4977
发表于 2022-9-30 19:00:49 | 显示全部楼层
我是用nlinfit拟合的20阶傅里叶级数,但阶数过高,nlinfit会很难收敛,建议去12-15就可以了。
另外为了防止fun函数出错,傅里叶级数的公式最好用程序写。
回复 支持 反对

使用道具 举报

571

主题

910

帖子

4781

积分

四级会员

Rank: 4

积分
4781
发表于 2022-9-30 19:00:58 | 显示全部楼层
你有数据吗?用命令函数可以拟合的。
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表