2014-11-21 92 views
-2

將以下數據插值到區間∈[-2 4.9]中的平滑曲線。在同一圖上畫出實際數據和插值曲線。插值曲線

x| -2 -1.7 -1.4 -1.1 -0.8 -0.5 -0.2 0.1 0.4 0.7 1 1.3 
y| 0.1029 0.1174 0.1316 0.1448 0.1566 0.1662 0.1733 0.1775 0.1785 0.1764 0.1711 0.1630 

x| 1.6 1.9 2.2 2.5 2.8 3.1 3.4 3.7 4 4.3 4.6 4.9 
y| 0.1526 0.1402 0.1266 0.1122 0.0977 0.0835 0.0702 0.0579 0.0469 0.0373 0.0291 0.0224 

我當前的代碼是...但是我無法做實際的插補曲線,這將有助於把這個數據到Excel表格中?第一次處理這個。

close all 
clear all 
clc 

x = [-2, -1.7, -1.4, -1.1, -0.8, -0.5, -0.2, 0.1, 0.4, 0.7, 1, 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4, 4.3, 4.6, 4.9]; 
y = [0.1029, 0.1174, 0.1316, 0.1448, 0.1566, 0.1662, 0.1733, 0.1775, 0.1785, 0.1764, 0.1711, 0.1630, 0.1526, 0.1402, 0.1266, 0.1122, 0.0977, 0.0835, 0.0702, 0.0579, 0.0469, 0.0373, 0.0291, 0.0224]; 
plot(x,y) 
+3

所以你還沒有做任何事情,並希望我們爲你做這個家庭作業問題?谷歌搜索「matlab插值」將其作爲第一個結果:https://au.mathworks.com/help/matlab/ref/interp1.html。 Stackoverflow是針對您在重新研究自己*後遇到的編程問題。 – David 2014-11-21 00:32:28

+0

你真的認爲我沒有研究它,我看了我的教科書和在線,這是我唯一的度假勝地,甚至連我的同學都沒有任何想法。不要指責我任何事情。我所要求的只是一些指導而非指責。 – 2014-11-21 00:35:55

+0

如果您正在嘗試使用Matlab進行某些操作並且被卡住,那麼第一步應該幾乎總是針對Google「Matlab」以及您正在嘗試執行的操作。 – David 2014-11-21 00:37:17

回答

0

This post that I just recently answered幾乎可以解決您的問題。但是,我會拋出一塊骨頭幫助你。使用interp1爲你做這個插值。你所做的是你指定(x,y)控制點,這些點是你的數據集的一部分,然後你指定一個點的其他x點,其中有更多的粒度和價值之間的原始值x值最初指定的,你可以看到輸出是什麼。

這裏有你需要執行要做到這一點插的步驟:

  1. 定義您(x,y)點(這是你已經做了什麼)。
  2. 定義一個網格x與您擁有的網格相比,網格更精細。您需要指定x值,該值位於您擁有的原始值x之間。使用linspace在最小值和最大值之間生成一定數量的點...在你的情況下分別是-2和4.9。我們可以通過在您的x點上使用minmax來隱藏它,以便您可以將其適用於您要使用的任何數據集。
  3. 使用interp1與步驟(2)中的網格點並找到插值點y點。
  4. 繪製點。

我要做的是做上面的過程,然後產生一個圖,在這裏我將繪製出給出的原始點,以及顯示插值曲線的虛線。我也將使用樣條插值來消除任何不規則性。

這樣:

%// Define your points - Step #1 
x = [-2 -1.7 -1.4 -1.1 -0.8 -0.5 -0.2 0.1 0.4 0.7 1 1.3 1.6 1.9 2.2 2.5 2.8 3.1 3.4 3.7 4 4.3 4.6 4.9]; 
y = [0.1029 0.1174 0.1316 0.1448 0.1566 0.1662 0.1733 0.1775 0.1785 0.1764 0.1711 0.1630 0.1526 0.1402 0.1266 0.1122 0.0977 0.0835 0.0702 0.0579 0.0469 0.0373 0.0291 0.0224]; 

%// Step #2 - Define grid of x points - Define 100 points in between min and max 
xval = linspace(min(x), max(x), 100); 

%// Step #3 - Use interp1 
yval = interp1(x, y, xval, 'spline'); 

%// Step #4 - Plot the stuff 
plot(x, y, 'bo', xval, yval, 'r--'); 

%// Throw in a grid too 
grid; 

這是我得到的情節:

enter image description here

酷?