MATLAB中拟合余弦函数

函数形式为F(x)=M+A*COS(15*x+Φ),x=11123,f(x)=291.85191.41229.12,应该如何运用MATLAB按照余弦函数格式进行拟合呢?M... 函数形式为F(x)=M+A*COS(15*x+Φ),x=1 11 23,f(x)=291.85 191.41 229.12,应该如何运用MATLAB按照余弦函数格式进行拟合呢? M为常数,也需要通过拟合计算得出。如果方便的话,希望能直接在matlab里做好,把程序传给我... 展开
 我来答
折柳成萌
高粉答主

2019-05-06 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:4.4万
采纳率:96%
帮助的人:5887万
展开全部

方法/步骤

  • 打开matlab在app中找到curve fitting拟合工具箱,打开它

  • 在命令窗口输入你的原始数据,例如x=1:1:100;y=x;

    我们需要通过拟合工具箱来拟合出y=x这个方程得两个参数a,b

  • 在拟合工具箱的页面左边栏把原始数据放进去,查看拟合结果,在如图所示箭头区域,可以选择拟合的函数,最基本的一阶函数,正弦函数

  • 运用拟合函数拟合最基本的是polyfit,

    程序如此:

    x=1:1:100;

    y=x;

    m=polyfit(x,y,1);

  • 结果输出两个值,用polyfit函数时用法为

    [a,b]=polyfit(x,y,n)其中a,b是直线方程y=a*x+b中的a,b两个参数

    x,y是原始数据,n为拟合的阶数,

  • 在matlab拟合函数中还有lsqcurvefit等,需要在matlab官网上寻找并看他的用法,我推荐是有matlab的固有拟合工具箱,在拟合一些比较复杂的函数时,用拟合函数时,参数必须有初始向量,只有禁言丰富的人才可以确定,所以一般建议使用拟合工具箱,简单函数可以使用拟合函数

lhmhz
高粉答主

2019-05-06 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7263 获赞数:16991

向TA提问 私信TA
展开全部

用MATLAB中拟合余弦函数,可以lsqcurvefit或nlinfit等函数来拟合。其拟合方法
x=[1 11 23]; 数据
y=[291.85 191.41 229.12];数据
func=@(a,x)a(1)+a(2)*cos(15*x+a(3));定义函数
x0=[260 -135 220];初值
[a,resnorm]=lsqcurvefit(func,x0,x,y)
运行结果
M=269.049547537301
A=-132.878400741592
Φ=219.221094909111
由于题主给出的数据偏少,拟合出的结果,可信度难易说服。
一般拟合问题,其数据最好十组左右。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
l7722526
2019-05-06 · TA获得超过2.7万个赞
知道大有可为答主
回答量:2.8万
采纳率:84%
帮助的人:3596万
展开全部
%nlinfit 非线性参数拟合
clc;clear;
x=[1,2,3,4,5,6,7,8,9,10];
y=[7,3,6,8,2,4,10,16,2,8];
myfunc=inline('beta(1)*sin(x)+beta(2)','beta','x');
beta=nlinfit(x,y,myfunc,[0 0]);
A=beta(1)
C=beta(2)
%test the model
%x=[1,2,3,4,5,6,7,8,9,10];
%y=2*sin(x)+3;
% myfunc=inline('beta(1)*sin(x)+beta(2)','beta','x');
% beta=nlinfit(x,y,myfunc,[0 0]);
% A=beta(1)
% C=beta(2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
透彻且犀利灬才子8760
2019-05-06 · TA获得超过4697个赞
知道大有可为答主
回答量:7285
采纳率:75%
帮助的人:729万
展开全部
用lsqcurvefit函数吧,给你段程序,自己照着改吧,要给初值 function Untitled3 clc xi=[0.019,0.023,0.027]; % x data yi=[430,380,256]; % y data abc0=[4,0.5,5]; % initial values abc = lsqcurvefit(@fun,abc0,xi,yi) % target function function y = fun(abc,x) y = (abc(1)*(1-x/abc(2))+x/abc(2)).^abc(3); abc = 31.2588 -3.9585 1.7033
追问
能直接传给我余弦函数的程序么?我有你的那段程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式