Matlab中无cftool函数,Matlab 非线性 曲线拟合 cftool

本文介绍了如何在Matlab中进行非线性曲线拟合,包括傅里叶函数拟合和自定义非线性模型的拟合。提供了详细代码示例,如使用fittype和fit函数创建和应用模型,并展示了如何设置拟合类型、选项以及查看拟合结果。此外,还讨论了fittype的不同构造方法和参数设定。
摘要由CSDN通过智能技术生成

现想编个函数,

该函数的输入为x,y,n,

其中x为原始点的x坐标的一维数组,y为原始点的y坐标的一维数组,n为傅里叶函数的阶数,

输出为拟合后的点的y坐标

以下代码在7.1版以上均可运行。

将以下代码保存为M文件:

function yy = zzz700createFit(x, y, n)

xData = x(:);

yData = y(:);

% Set up fittype and options.

ft = fittype( ['fourier',num2str(n)'] );

opts = fitoptions( ft );

opts.Display = 'Off';

% Fit model to data.

[fitresult, gof] = fit( xData, yData, ft, opts );

%  拟合后的点的y坐标

yy = fitresult(xData);

在命令窗口输入:

% 输入x,y,n

x = 0:0.1:2*pi;

y = rand(length(x),1);

n = 6;

% 输出为拟合后的点的y坐标

yy = zzz700createFit(x, y, n)

.......................

matlab非线性回归

x = [0, 1, 3, 5, 10, 24], y = [1, 1.4, 4.5, 3.5, 2.1, 1.3],

函数可能是y=a*x^3+b*x^2+c*x^1+d。

以下代码在7.1版以上均可运行。

close all

clear,clc

x = [0, 1, 3, 5, 10, 24];

y = [1, 1.4, 4.5, 3.5, 2.1, 1.3];

xData = x';

yData = y';

% Set up fittype and options.

ft = fittype( 'a*x^3+b*x^2+c*x^1+d', 'independent', 'x', 'dependent', 'y' );

opts = fitoptions( ft );

opts.Display = 'Off';

opts.StartPoint = [0.795199901137063 0.186872604554379 0.489764395788231 0.445586200710899];

% Fit model to data.

[fitresult, gof] = fit( xData, yData, ft, opts )

% Plot fit with data.

figure( 'Name', '拟合图' );

h_ = plot( fitresult, x, y, '* ');  %  拟合图 原始数据

legend off;  % turn off legend from plot method call

set(h_(2),'Color',[1 0 0],...

'LineStyle','-', 'LineWidth',2,...

'Marker','none', 'MarkerSize',6);

h = legend('原始数据','拟合曲线',2,'Location','Best');

set(h,'Interpreter','none')

title('拟合图 原始数据')

% Label axes

xlabel( 'x' );

ylabel( 'y' );

grid on

uid-30249533-id-5032640.htmlfitresult =

General model:

fitresult(x) = a*x^3+b*x^2+c*x^1+d

Coefficients (with 95% confidence bounds):

a =    0.005205  (-0.003479, 0.01389)

b =     -0.1843  (-0.4727, 0.1041)

c =       1.447  (-0.6652, 3.56)

d =      0.7761  (-2.473, 4.025)

gof =

sse: 1.5902

rsquare: 0.8381

dfe: 2

adjrsquare: 0.5952

rmse: 0.8917

......................

x=[3.23E+04

5.71E+04

1.49E+05

1.61E+05

1.79E+05

2.02E+05

2.11E+05

2.45E+05

2.68E+05

4.14E+05

5.11E+05

7.79E+05

7.22E+05

1.28E+06

1.01E+06

1.34E+06

1.60E+06

2.01E+06

1.02E+07

1.02E+07

1.46E+07

4.63E+07

1.61E+08

1.42E+09

1.22E+09

3.77E+09];

y=[151

140

140

130

130

130

110

120

120

120

110

100

90.5

90.5

80.2

101

89.3

81.4

80.2

70

76.1

70.8

74.4

71.1

60.9

65.8];

xData = x;

yData = y;

% Set up fittype and options.

ft = fittype( '(230-a)*exp(-((x-1/4)/b)^c)+a', 'independent', 'x', 'dependent', 'y' );

opts = fitoptions( ft );

opts.Display = 'Off';

opts.Lower = [40 10000 0];

opts.StartPoint = [0.278498218867048 0.546881519204984 0.957506835434298];

opts.Upper = [100 1000000000 10];

% Fit model to data.

[fitresult, gof] = fit( xData, yData, ft, opts )

% Plot fit with data.

figure( 'Name', '拟合图 ' );

h = plot( fitresult, xData, yData , '* ');

set(h(2),'Color',[1 0 0],...

'LineStyle','-', 'LineWidth',2,...

'Marker','none', 'MarkerSize',6);

h = legend('原始数据','拟合曲线',2,'Location','NorthEast');

title('拟合图 原始数据')

% Label axes

xlabel( 'x' );

ylabel( 'y' );

grid on

uid-30249533-id-5032640.html

fitresult =

General model:

fitresult(x) = (230-a)*exp(-((x-1/4)/b)^c)+a

Coefficients (with 95% confidence bounds):

a =       69.11  (63.03, 75.19)

b =  1.528e+005  (1.036e+005, 2.021e+005)

c =      0.3109  (0.2448, 0.377)

gof =

sse: 1.1832e+003

rsquare: 0.9337

d

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值