适合曲线数据点x = f (y)

16个视图(30天)
莎拉·阿姆斯特朗
莎拉·阿姆斯特朗 2019年9月25日
你好,
我有一个图表数据点由红星(图1,连接),我想用曲线。曲线不一定是准确的,它只需要作为视觉指南。下面我画一个示意图给我希望。其他曲线在图上我把这张照片从副产品代码,和这个问题无关。下载188bet金宝搏我怎么能适合红色的曲线数据点在MATLAB ?
- - - - - - - - - - - - - - - - - - - - -
smoothingspline,我试着用polyfit pchip和其他曲线拟合工具,但他们错误的数据点连接在一起,因为这张图实际上是x = f (y)。在MS Excel,如果我切换轴曲线变成一个一对一的函数y = f (x),我可以很容易地适应一个二次曲线点。
我目前策划点每个点。我可以画出点线,但它不是很顺利(见附加图2)。我想我可以增加数据点的数量,但增加计算时间太多。有什么建议吗?
请查收下面的一些事情我已经试过了。红色的数据保存在1 x 11双打p_tn (x)和p_tn (y值)。
谢谢你这么多!请让我知道如果你需要更多信息,澄清,或数据。
% 1 - Polyfit
[p, s,μ]= polyfit (p_Tn p_Tn 3);
(Y),δ)= polyval (p p_Tn年代,μ)
X = linspace(0、0.05、长度(Y));
情节(Y, X,“k -”)
%尝试2 -非参数拟合
xq = linspace (0, 0.05,100);
p = pchip (p_tn’, p_tn’, xq);
页= ppval (p, xq);
情节(xq,页);
3 - Smoothingspline %尝试
f =适合(p_tn’, p_tn’,“smoothingspline”);
情节(f)
%尝试4 -分割上下polyfit一半的数据点和使用
i = 1:长度(p_tn) 1
如果p_tn (i) > p_tn (i + 1)
x1 (i) = p_tn(我);
日元(i) = p_Tn(我);
elseifp_tn (i) < p_tn (i + 1)
x2 (i) = p_tn(我);
y2 (i) = p_Tn(我);
结束
结束
p1 = polyfit (x1, y1, 2);
p2 = polyfit (x2, y2, 2);
xf1 = linspace (min (x1)、0.05);
xf2 = linspace (min (x2), 0.05);
f1 = polyval (p1, xf1);
f2 = polyval (p2, xf2);
情节(x1, y1, x2, y2)
情节(xf1 f1,“r——”)
情节(xf2 f2,“r”)
2的评论
莎拉·阿姆斯特朗
莎拉·阿姆斯特朗 2019年9月25日
当然!我有p_tn (x)和p_tn附加在.mat文件(y值)。谢谢!

登录置评。

接受的答案

darova
darova 2019年9月25日
6个评论
莎拉·阿姆斯特朗
莎拉·阿姆斯特朗 2019年9月30日
太棒了,我将在这而不是使用一个循环。我也想尝试极地坐标是否可以改进它,但是现在足够精确的初始曲线!谢谢你的帮助。

登录置评。

答案(1)

泰德•舒尔茨
泰德•舒尔茨 2019年9月25日
因为你想让一个函数的“y”而不是“x”,您需要翻转时x和y解方程(这相当于当你旋转在excel中)。
试试这样:
p = polyfit (y、x, n)
日元= linspace(0, 4 *π);
x1 = polyval (p, y1);
情节(x, y,“o”)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!