matlab ppval understanding of centering/displacement in breaks
2 次查看(过去 30 天)
显示 更早的评论
The documentation on the ppval function gives the following example:
breaks = [0 4 10 15];
coefs = [0 1 -1 1 1; 0 0 1 -2 53; -1 6 1 4 77];
pp = mkpp(breaks,coefs)
xq = 0:0.01:15;
plot(xq,ppval(pp,xq))
line([4 4],ylim,'LineStyle','--','Color','k')
line([10 10],ylim,'LineStyle','--','Color','k')
I was trying to understando the function, but couldn't figure out why the function behaves as it does.
My understanding of the function was that, from the interval [0,4] the polynomial was p1=[0 1 -1 1 1], from [4 10], p2=[0 0 1 -2 53], and from [10 15], p3=[-1 6 1 4 77]. To my surprise, this is not exactly the case.
If you evaluate the polynomials at, say, x=4, you have:
p1=[0 1 -1 1 1];
p2=[0 0 1 -2 53];
y1 = polyval(p1,4)
y2 = polyval(p2,4)
And you can see y1~=y2. The behaviour of the ppval function calculates the polynomial on the range [4 10] with a displacement. You will get both values to be the same evaluaten the second polynomial at
y2 = polyval(p2,4-4)
So, ppval function evaluates the polynomial on the range [4 10], but the x values are from [0 6]. Why MATLAB does it this way?
And how do I define a polynomial for each range, so that MATLAB uses the polynomial exactly at the point specified (as I first thought the function would behave)?
0 个评论
回答(1 个)
Steven Lord
2019-11-25
The documentation page for ppval says that the pp input is a struct array created by a function like mkpp. If we look at the mkpp documentation page we can see what the coefficients represent. Note that the coefficients represent a polynomial but it's not a polynomial in x. It's a polynomial in x - breaks(i). Try calling polyval to evaluate the polynomial at (x - breaks(i)).
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!