如何用matlab拟合模型分段函数

如何用matlab拟合模型分段函数,第1张

你要知道,你要拟合的是一个分段函数,这本身就不是一般的连续光滑函数。

nlinfit之所以要有初值这一项,就是考虑到在某些变态的情况下,无法找到最小二乘函数的最小值,可能是一个局部的最小值,也可能根本找不到,所以有必要通过改变迭代初值的方法进行试验。对于这种分段函数,最好的方法还是分段拟合。

fun1=inline('4213-300x/ref(1)-300(ref(2)+ref(3))+300ref(3)exp(-x/(ref(3)ref(4)))','ref','x');

fun2=inline('4213-3000/ref(1)-300ref(3)exp(-x/(ref(3)ref(4)))(exp(10/(ref(3)ref(4)))-1)','ref','x');

fun=@(ref,t)((t<=10)fun1(ref,t)+(t>10)fun2(ref,t));

t=0:01:50;

v=[3969

3963

3959

3955

3952

3949

3947

3945

3943

3941

3939

3938

3936

3935

3933

3932

393

3929

3928

3927

3926

3925

3923

3922

3921

392

3919

3918

3917

3916

3915

3914

3913

3912

3911

391

3909

3908

3907

3907

3906

3905

3904

3903

3903

3902

3901

39

39

3899

3898

3898

3897

3896

3896

3895

3894

3893

3893

3892

3891

3891

389

3889

3889

3888

3888

3887

3887

3886

3886

3885

3884

3884

3883

3882

3882

3881

388

388

3879

3879

3878

3878

3877

3877

3876

3876

3875

3875

3874

3874

3873

3873

3872

3872

3871

387

387

3869

3869

4105

4108

411

4112

4114

4115

4116

4117

4118

4119

4119

412

412

4121

4122

4122

4123

4123

4124

4124

4124

4125

4125

4126

4126

4126

4127

4127

4128

4128

4129

4129

4129

4129

4129

413

413

413

413

413

4131

4131

4131

4131

4132

4132

4132

4132

4132

4132

4133

4133

4133

4133

4133

4134

4134

4134

4134

4134

4134

4135

4135

4135

4135

4135

4136

4136

4136

4136

4136

4137

4137

4138

4138

4138

4139

4139

4139

4139

4139

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

414

4141

4141

4141

4141

4141

4141

4141

4141

4141

4141

4142

4142

4142

4142

4142

4142

4142

4142

4142

4142

4143

4143

4143

4143

4143

4143

4143

4143

4143

4143

4143

4143

4143

4144

4144

4144

4144

4144

4144

4144

4144

4144

4144

4144

4145

4145

4145

4145

4145

4145

4145

4145

4145

4145

4145

4145

4145

4145

4145

4145

4146

4146

4146

4146

4146

4146

4146

4146

4146

4146

4146

4146

4146

4147

4147

4147

4147

4147

4147

4147

4147

4147

4147

4147

4147

4147

4147

4147

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4148

4149

4149

4149

4149

4149

4149

4149

4149

4149

4149

4149

4149

4149

4149

4149

4149

415

415

415

415

415

415

415

415

415

415

415

415

415

415

415

415

415

415

415

415

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4151

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4152

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4153

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4154

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4155

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156

4156];

abc=nlinfit(t',v,fun,[51891 000083 000013 12050]');

plot(t,v);hold on;

f=@(t)(fun(abc,t));

fplot(f,[0,50],'r')

就实际应用而言,还是以非线性代数方程参数拟合问题居多。

实现非线性代数方程参数拟合的软件有很多,比如MATLAB、Origin、SPSS和1stOpt等,特别是1stOpt,其代码简单易学,几乎不需调试,即可获得高质量的拟合结果,不过需要指出的是,该软件的拟合过程对 *** 作者而言是一个黑箱。拟合问题,实际上是一类最优化问题。既然说到最优化问题,自然要涉及最优化算法、初值、程序代码。初值的选取一直是困扰局部最优算法的问题,比如在调用MATLAB著名的lsqnonlin函数时,拟合结果对选用的初值具有很大的依赖性。以具有全局搜索能力算法的计算结果,作为初值供局部最优化算法调用,是一种解决初值选取问题的方法。

nc是加工中心用的程序,

gcode是3D打印机用的程序,

刀路软件都可以处理这些格式,推荐:

CIMCO Edit,刀路编辑,修改刀路和刀路仿真;

NC Viewer,刀路查看和验证,用于发现程序中的格式错误;

熊族,刀路查看,用于获取程序执行时间;

如果要生成这些文件,需要用专门的CAM软件:

NC程序:UG、cimatron、CAMworks/HSMWorks;

GCO程序:使用3D打印机配套的软件,比如Repetier-Host之类;

如果两种软件求得的目标函数值是一样的,只是变量值不一样,那就是你的规划有多组解。

如果目标函数不一样,那么估计是你至少有个软件的程序写错了。否则那就是这两个软件有个软件开发的有BUG(可能性很小)。

你可以自己验算一下,把两个软件最后求得的极值和变量值都带到约束函数中,看更“极”的那个,是不是真的符合所有约束条件。如果不符合,那基本肯定是你这个软件中的程序写错。

右键>1stOpt的exe程序文件,以管理员身份运行打上对勾,保存。

打开程序>工具>快捷工具栏设置>文件管理器前面打上对勾。

再在上面工具栏单击文件管理器快捷按钮。

以上就是关于如何用matlab拟合模型分段函数全部的内容,包括:如何用matlab拟合模型分段函数、遗传算法可以减少过拟合嘛、什么软件保存.nc和.gcode等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10206076.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存