编者按:该文件被选为中央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中央文件交换。检索。
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一致性 |
Vehzan Rustomji(查看资料)
迪伦·麦科德(查看资料)
难以置信。主要的节省时间,非常感谢!
TWAN萎蔫(查看资料)
Vehzan Rustomji(查看资料)
高超。得到了与头痛的最低金额完成任务。由于一吨的作者!
Mykyta Ivaniuk(查看资料)
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))');
Avichay埃夫拉伊姆(查看资料)
伟大的功能,谢谢!
有没有一种方法来计算输出拟合曲线的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' '');
HeadInTheClouds(查看资料)
是Mjaavatten,
感谢您的及时回复。我的问题是措辞不当造成的一种误解。它应该是措辞,“是否有可能使用此功能,以便通过一个指定的y值和指定范围的x值内的x值,以适应多项式?”通过这种方式,我的意思是我想迫使多项式穿过x轴,但不希望指定特定的x值在它与x轴,我想指定一系列可能的X-值,其中所述多项式为适合通过在指定范围内的一个点。
希望这有助于澄清我的问题。
是Mjaavatten(查看资料)
HeadInTheClouds:如果一个多项式在整个的间隔必须是恒定不变无处不在,而你不需要polyfix告诉你。你的情况:P(X)= 0。或者我误解你的问题?
HeadInTheClouds(查看资料)
嗨是Mjaavatten,
是否有可能通过一个离散点(例如,如果我想强制函数通过Y X = x1和X = X2之间= 0)到一个值的范围,而不是使用该功能,以适应一个多项式?
提前致谢!
沃格尔(查看资料)
伟大的功能!
是否存在3D?
Giuseppina Buttitta(查看资料)
是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));%转变
马里兰州Nahidul伊斯兰教(查看资料)
嗨是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非常有帮助!
达纳 - 阿德里安娜Botesteanu(查看资料)
伯吉斯(查看资料)
代码工作完美。这个怎么样扩展到3个维度?...非常感谢!
多米尼克VIT(查看资料)
是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(查看资料)
谢谢