文件交换

图像缩略图

polyfix(X,Y,N,xfix,yfix,xder,dydx)

1.3.1.2版(2.66 KB)通过 是Mjaavatten
适应多项式p到的数据,但在一个或多个点完全匹配

51个下载

更新2020年1月20日

查看许可证

编者按:该文件被选为中央MATLAB本周的挑选

有时候,我们希望以适应多项式的一些数据,但想在一个或多个点给力的完美匹配一些已知值。这个函数返回这样一个多项式。

引用作为

是Mjaavatten(2020年)。polyfix(X,Y,N,xfix,yfix,xder,dydx)(//www.tatmou.com/matlabcentral/fileexchange/54207-polyfix-x-y-n-xfix-yfix-xder-dydx),MATLAB中央文件交换。检索

评论和评分(33

难以置信。主要的节省时间,非常感谢!

TWAN萎蔫

高超。得到了与头痛的最低金额完成任务。由于一吨的作者!

GuillyT

是Mjaavatten

雅各布:感谢您指出的错误。我已经实现了你的更正(并添加dydx的比例)。很显然,我应该更彻底的测试。

我通过代码去了,唯一的改变,你应该需要做的是增加以下线
xfix =(xfix - 亩(1))/亩(2);%这应该在新被添加如果nargout> 2环

还需要在如果nargin> 5循环要添加的以下行

如果nargout> 2
xder =(xder(:) - 亩(1))/亩(2);
其他
xder = xder(:);
结束

感谢您的更新,但是亩功能似乎没有被适当地施加到固定的x值

你能添加几行处理来自polyfit x值的定心(亩=其它标准输出,诸如错误和[平均(X); STD(x)]的,x_c =(X-亩(1))/亩(2))。否则,这是一个伟大的剧本。

是Mjaavatten

杰西:
R平方将是负面的,只要Y = y_mean比你的多项式拟合更好的模式。如果你解决一个点,是不是代表的观测值可能发生这种情况。例:
X = linspace(0,1,100)'; Y = 1个+ 0.1 * randn(100,1);
P = polyfix(X,Y,2,0,0); F = polyval(P,X);
积(X,Y,X,F '');
Rsquared = 1 - ((Y-F) '*(Y-F))/((Y-平均值(Y))' *(Y-平均值(Y)))

杰西Kadosh

是,

非常感谢这个有用的和高效的代码!

Reading about R-squared values, I see that they can be greater than 1 even for linear regression with low-order polynomials in cases where a y-intercept is fixed at 0 (i.e., regression through the origin, which occurs when a constant is not included among the regression functions). I realize that polyfix (which uses polyval) probably always includes a constant term in the regression functions, but I am wondering if the mathematical approach used in polyfix to force the fixed points in the fit has a similar effect to omitting the constant term. That is, if we use polyfix to force the curve to pass through a chosen point, is that equivalent mathematically to "forcing" a y-intercept value of zero (passing through the origin), as far as computing R-squared is concerned? If so, I assume it is then possible for R-squared values to surpass 1 when using polyfix and forcing one or more fixed points.

对于一些参考帖R平方时省略y截距(固定为零)超过1是:
//www.tatmou.com/matlabcentral/answers/159369-polyfit-and-r-2-value
https://stats.stackexchange.com/questions/219810/r-squared-and-higher-order-polynomial-regression
https://stats.stackexchange.com/questions/334004/can-r2-be-greater-than-1

这是如此的帮助!我花了几个小时试图弄清楚这一点。我正要放弃和使用Excel(这是可怕的是大数据集)时,我发现这一点。谢谢!

是Mjaavatten

Avichay:对于大多数我自己用polyfit或polyfix的,目测比的拟合优度的正式措施更为合适。大多数的这些措施很容易从投入和产出计算无论如何,所以我宁愿离开这个给用户。
下面是如何计算R ^ 2的示例::
X = linspace(0,PI,25);
Y =的sin(x);
P = polyfix(X,Y,2,0,0);
F = polyval(P,X);
Rsquared = 1 - ((Y-F)*(Y-F) ')/((Y-平均值(Y))*(Y-平均值(Y))');

伟大的功能,谢谢!
有没有一种方法来计算输出拟合曲线的R ^ 2?

是Mjaavatten

HeadInTheClouds:
我有一种感觉,我可能会误解你的问题。我相信,你想要什么,需要一个有界的,非线性优化是polyfix的最好的做法之外。

在下面的例子中,NRM是一种在线功能,其计算的y值和最佳拟合多项式的传球的对应值之间的差通过(x0,0)的规范。我用fminbnd从优化工具箱给定的时间间隔,最大限度地减少NRM(X0)内找到X0的价值。鉴于y值的传播,一条直线似乎是最合适在这种情况下。

X = linspace(0,2,100)';
Y = EXP(-x)-0.25+ 0.3 * randn(100,1);
NRM = @(X0)范数((Y-polyval(polyfix(X,Y,1,x0,0)中,x)));
X0 = fminbnd(NRM,1.3,1.6);
DISP(X0)
P = polyfix(X,Y,1,x0,0);
积(X,Y,X,polyval(P,X),[1.3,1.6],[0,0], 'K' '');

是Mjaavatten,
感谢您的及时回复。我的问题是措辞不当造成的一种误解。它应该是措辞,“是否有可能使用此功能,以便通过一个指定的y值和指定范围的x值内的x值,以适应多项式?”通过这种方式,我的意思是我想迫使多项式穿过x轴,但不希望指定特定的x值在它与x轴,我想指定一系列可能的X-值,其中所述多项式为适合通过在指定范围内的一个点。
希望这有助于澄清我的问题。

是Mjaavatten

HeadInTheClouds:如果一个多项式在整个的间隔必须是恒定不变无处不在,而你不需要polyfix告诉你。你的情况:P(X)= 0。或者我误解你的问题?

嗨是Mjaavatten,
是否有可能通过一个离散点(例如,如果我想强制函数通过Y X = x1和X = X2之间= 0)到一个值的范围,而不是使用该功能,以适应一个多项式?
提前致谢!

沃格尔

伟大的功能!
是否存在3D?

是Mjaavatten

答案马里兰州Nahidul伊斯兰教:

对不起,我以前没有现在看到你的评论。我假设你想要的是舒展和移位原始曲线通过指定的点。p是多项式和xfix和yfix指定的结束的坐标points.Then新多项式由下式给出原

标度= DIFF(yfix)/ DIFF(polyval(P,xfix));
PNEW = P *规模;拉伸%
PNEW(4)= PNEW(4)+ yfix(1)-polyval(PNEW,xfix(1));%转变

嗨是Mjaavatten,
假设我有一个公式
。。ynew = P1 * xnew ^ 3 + P2 * xnew ^ 2 + P3 * xnew + P4。%式(1)
哪里,
P1 = -4.095e-15;
P2 = 3.3606e-10;
P3 = -1.164e-05;
P4 = 2.9954;

如果
xnew = [5:5:22385]。然后我们有一个曲线。

我希望得到一个新的曲线,这将遵循完全相同的趋势方程1,但将是开始和结束点为[5,22385],[15,14.7]

我怎样才能做到这一点?

谢谢。

神奇的代码,将是对3D非常有帮助!

伯吉斯

代码工作完美。这个怎么样扩展到3个维度?...非常感谢!

是Mjaavatten

答案chef13:
这当然是一个工具,你已经使用过了,我明白了。无论是适当的工具将取决于你的任务的大背景下。

chef13

您好我想解决这个问题:
//www.tatmou.com/matlabcentral/answers/327332-generate-trajectories-with-same-tangent-in-a-specific-point

你认为这是正确的工具吗?

谢谢

是Mjaavatten

答案Anelechi Ibekw:
该文件的版本上进行了测试高达R2014b,这是即有机会获得最新的。

伯吉斯

拜托,什么版本的Matlab的有这个功能吗?其实,我认为这是R2016b,但事实并非如此。

SEBIN JOSE

谢谢

更新

1.3.1.2

更改图像

1.3.1.1

新增图像

1.3.1.0

修正了1.3.0.0版本错误雅各布雷斯勒指出。

1.3.0.0

按照要求由Jacob布雷斯勒,我已添加的可选输出S和亩,使输出从polyfix与polyfit符合

1.2.0.0

在帮助部分固定琐碎的错误

1.1.0.0

版本1.1包括用于指定衍生物的选项。P中就是一个行向量,用于与polyfit一致性

MATLAB版本兼容性
创建与R2012b
与任何版本兼容
平台兼容性
视窗 苹果系统 Linux的