MATLAB中拟合余弦函数
方法/步骤
打开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的固有拟合工具箱,在拟合一些比较复杂的函数时,用拟合函数时,参数必须有初始向量,只有禁言丰富的人才可以确定,所以一般建议使用拟合工具箱,简单函数可以使用拟合函数
用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
由于题主给出的数据偏少,拟合出的结果,可信度难易说服。
一般拟合问题,其数据最好十组左右。
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)
能直接传给我余弦函数的程序么?我有你的那段程序