我有两个向量定义的(随机),x和y如下: x1=[1000 3000 5000 6000 4000 2000 500 0 -1000 -3000 -5000 -6000 -4000 -2000 -500 1 999 2999 4999]; y1=[5000 4999 4990 3500 2500 2499 2498 2497 2496 2495 2494 1000 -1000 -999 -998 -997 -996 -995 -994];
三次样条的实施
以下是我在情节简单地输入(X1,Y1)中获得的曲线图:
是否有生产从使用interp1命令上述数据的平滑曲线的方法吗?我被告知我应该使用三次样条曲线来获得所需的曲线,但是,由于我对Matlab不熟悉,因此我不知道如何实现这样的解决方案。提前致谢!
编辑:我试图执行它如下,但我得到一个可怕的情节! x1_temp=-6000:100:6000; pc=pchip(x1,y1,x1_temp); plot(x1,y1,'o',x1_temp,pc,'-');
我该如何修改这段代码才能生成正确的图?
你读取的文档['interp1'](http://www.mathworks.com/help/matlab/ref/interp1.html)?在[方法部分](http://www.mathworks.com/help/matlab/ref/interp1.html#inputarg_method)下,它显示了各种样条线选项。就我个人而言,我建议你从'pchip'开始,而不是三次样条,除非有令人信服的理由使用纯立方样条。阅读文档,自己尝试,如果卡住了,请再次询问(使用代码!!!)。 – Dan
你有一个非单调向量x,但是是一个单调向量y。所以你不应该插入'interp1(x1,y1,MyNewsPointsOnX,'pchip')',而是使用'interp1(y1,x1,MyNewsPointsOnY,'pchip')'。使用'MyNewsPointsOnY = linspace(min(y1),max(y1),1000);' – obchardon
@Dan我编辑了我原来的帖子,以包含我尝试解决这个问题。 –