我怎么做一个有切线连续性的样条插值

8次浏览(最近30天)
迈克尔Schletterer
迈克尔Schletterer 2021年4月22日
回答: darova 2021年8月8日
大家好,这是我在这个论坛的第一个帖子,所以请不要讨厌我的格式等。
我试图从样条插值得到数据(两次)。我在这里遇到的问题是,在插值数据中总有一些扭结导致了推导的问题。
我的问题是:有没有一种方法可以对我的数据进行样条(或其他)插值,使其在每个插值点上的斜率保持不变(插值数据中没有扭曲,在每个样条点上都有切线连续性)?
这样我可以做两次推导来找到数据的线性部分。
提前感谢你的帮助。
负载(“test.mat”);
HV4502 = table2array (HV450102);
x452 = linspace (0, HV4502 (, 2), 200);
HV4502S =花键(HV4502(1:结束,2),HV4502(1:结束,1),x452);
情节(x452 HV4502S,‘g’);
持有
情节(HV4502(1:结束,2),HV4502(1:结束,1),“r——”);
持有
G4502 =梯度(HV4502S)。/梯度(x452);
GG452 =梯度(G4502)。/梯度(x452);
情节(x452 GG452,“b”);
3评论

登录评论。

答案(1)

darova
darova 2021年8月8日
这是什么?我计算每个点的切线,并添加点
dx = 0.1;加点距离%
x = 0:5;
y = sin (x);%原始数据
x1 = 0: .1:5;
日元=花键(x, y, x1);%细化数据
dy =每股(diff (y)。/ diff (x));%找到切
A = diff(dy)/2 + dy(1:end-1);%找到切
k = tan(一个);%找到切
x2 = 0(1、2 *元素个数(x) 2);
X2 ([1 end]) = x([1 end]);%第一和最后得分
tmp = [(2: end-1) dx; x (2: end-1) + dx);%增加点
x2 (2: end-1) = tmp (:);%一行
y2 = x2 * 0;
Y2 ([1 end]) = y([1 end]);%第一和最后得分
i = 1:长度(k)
y(2*i) = y(i+1) - k(i)*dx;%左点
y(2*i+1) = y(i+1) + k(i)*dx;%对点
结束
x3 = x1;
y3 =花键(x2, y2, x3);创建新的样条
情节(x, y,“r”
持有
情节(x1, y1,“r”
情节(x2, y2,“。b”
情节(x3, y3,“b”
持有
传奇(“原始数据”原始样条的“添加点”“通过添加的点进行样条”

标签

s manbetx 845


释放

R2021a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!