matlab实现三角波波型,linearFitting_Judge.m

function [list] = linearFitting_Judge(f, xMin, xMax, list, e)

%% 打印正在拟合的区间

fprintf('calculating in [ %f, %f ] \n', xMin, xMax);

%% 计算中点两边两段的斜率、截距和最大误差

[xMin, y1, xMax, y2, xMid, yMid, k1, k2, b1, b2, err1, err2] = linearFitting_Calc(f, xMin, xMax, e);

%% 计算索引拼合列表

index = find(list(1, :) == xMin);

list = [list(:, 1:index - 1), [xMin, xMid; y1, yMid; k1, k2; b1, b2; err1, err2], list(:, index + 1:end)];

%% 通过最大误差决定接下来在哪一段进行拟合,并递归调用进行下一轮拟合

if (err1 > e && err2 > e)

[list] = linearFitting_Judge(f, xMin, xMid, list, e);

[list] = linearFitting_Judge(f, xMid, xMax, list, e);

elseif (err1 > e && err2 <= e)

hold on;

plot([xMid, xMax], [yMid, y2]);

drawnow

[list] = linearFitting_Judge(f, xMin, xMid, list, e);

elseif (err1 <= e && err2 > e)

hold on;

drawnow

plot([xMin, xMid], [y1, yMid]);

[list] = linearFitting_Judge(f, xMid, xMax, list, e);

else

%% 拟合从这里结束

hold on;

drawnow

plot([xMin, xMid, xMax], [y1, yMid, y2]);

end

end

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值