我有兩個向量定義的(隨機),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我編輯了我原來的帖子,以包含我嘗試解決這個問題。 –