導航:首頁 > 源碼編譯 > matlab樣條插值演算法

matlab樣條插值演算法

發布時間:2023-08-24 15:06:56

① matlab 三次樣條插值法擬合三次多項式

1、m次多項式插值法:利用Matlab里的命令
a = spline(x,y,xx)
其中,x,y為給定點的矩陣,矩陣 a 為矩陣xx所有點對應的擬合值矩 陣。

2、m次擬合法:a = polyfit(x,y,m)
其中,x,y為給定點的矩陣,前者為自變數矩陣,後者為因變數矩陣。m為多項式的次數, a為擬合出來的m次多項式的系數矩陣。

3、在這里x、y都是1*7的矩陣。至於最基本的賦值、創建變數的知識還是要自己看看啊、、、不難的、、

② matlab插值

不清楚你的具體問題,給你如下的例子。你可以參考下。
§2 插值問題

在應用領域中,由有限個已知數據點,構造一個解析表達式,由此計算數據點之間的函數值,稱之為插值。
實例:海底探測問題
某公司用聲納對海底進行測試,在5×5海里的坐標點上測得海底深度的值,希望通過這些有限的數據了解更多處的海底情況。並繪出較細致的海底曲面圖。
一、一元插值
一元插值是對一元數據點(xi,yi)進行插值。
1. 線性插值:由已知數據點連成一條折線,認為相臨兩個數據點之間的函數值就在這兩點之間的連線上。一般來說,數據點數越多,線性插值就越精確。
調用格式:yi=interp1(x,y,xi,』linear』) %線性插值
zi=interp1(x,y,xi,』spline』) %三次樣條插值
wi=interp1(x,y,xi,』cubic』) %三次多項式插值
說明:yi、zi、wi為對應xi的不同類型的插值。x、y為已知數據點。
例1:已知數據:
x 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1
y .3 .5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2
求當xi=0.25時的yi的值。
程序:
x=0:.1:1;
y=[.3 .5 1 1.4 1.6 1 .6 .4 .8 1.5 2];
yi0=interp1(x,y,0.025,'linear')
xi=0:.02:1;
yi=interp1(x,y,xi,'linear');
zi=interp1(x,y,xi,'spline');
wi=interp1(x,y,xi,'cubic');
plot(x,y,'o',xi,yi,'r+',xi,zi,'g*',xi,wi,'k.-')
legend('原始點','線性點','三次樣條','三次多項式')
結果:yi0 = 0.3500

要得到給定的幾個點的對應函數值,可用:
xi =[ 0.2500 0.3500 0.4500]
yi=interp1(x,y,xi,'spline')
結果:
yi =1.2088 1.5802 1.3454
(二) 二元插值
二元插值與一元插值的基本思想一致,對原始數據點(x,y,z)構造見世面函數求出插值點數據(xi,yi,zi)。
一、單調節點插值函數,即x,y向量是單調的。
調用格式1:zi=interp2(x,y,z,xi,yi,』linear』)
『liner』 是雙線性插值 (預設)
調用格式2:zi=interp2(x,y,z,xi,yi,』nearest』)
』nearest』 是最近鄰域插值
調用格式3:zi=interp2(x,y,z,xi,yi,』spline』)
『spline』是三次樣條插值
說明:這里x和y是兩個獨立的向量,它們必須是單調的。z是矩陣,是由x和y確定的點上的值。z和x,y之間的關系是z(i,:)=f(x,y(i)) z(:,j)=f(x(j),y) 即:當x變化時,z的第i行與y的第i個元素相關,當y變化時z的第j列與x的第j個元素相關。如果沒有對x,y賦值,則默認x=1:n, y=1:m。n和m分別是矩陣z的行數和列數。
例2:已知某處山區地形選點測量坐標數據為:
x=0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
y=0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6
海拔高度數據為:
z=89 90 87 85 92 91 96 93 90 87 82
92 96 98 99 95 91 89 86 84 82 84
96 98 95 92 90 88 85 84 83 81 85
80 81 82 89 95 96 93 92 89 86 86
82 85 87 98 99 96 97 88 85 82 83
82 85 89 94 95 93 92 91 86 84 88
88 92 93 94 95 89 87 86 83 81 92
92 96 97 98 96 93 95 84 82 81 84
85 85 81 82 80 80 81 85 90 93 95
84 86 81 98 99 98 97 96 95 84 87
80 81 85 82 83 84 87 90 95 86 88
80 82 81 84 85 86 83 82 81 80 82
87 88 89 98 99 97 96 98 94 92 87
其地貌圖為:
對數據插值加密形成地貌圖。
程序:
x=0:.5:5;
y=0:.5:6;
z=[89 90 87 85 92 91 96 93 90 87 82
92 96 98 99 95 91 89 86 84 82 84
96 98 95 92 90 88 85 84 83 81 85
80 81 82 89 95 96 93 92 89 86 86
82 85 87 98 99 96 97 88 85 82 83
82 85 89 94 95 93 92 91 86 84 88
88 92 93 94 95 89 87 86 83 81 92
92 96 97 98 96 93 95 84 82 81 84
85 85 81 82 80 80 81 85 90 93 95
84 86 81 98 99 98 97 96 95 84 87
80 81 85 82 83 84 87 90 95 86 88
80 82 81 84 85 86 83 82 81 80 82
87 88 89 98 99 97 96 98 94 92 87];
mesh(x,y,z) %繪原始數據圖
xi=linspace(0,5,50); %加密橫坐標數據到50個
yi=linspace(0,6,80); %加密縱坐標數據到60個
[xii,yii]=meshgrid(xi,yi); %生成網格數據
zii=interp2(x,y,z,xii,yii,'cubic'); %插值
mesh(xii,yii,zii) %加密後的地貌圖
hold on % 保持圖形
[xx,yy]=meshgrid(x,y); %生成網格數據
plot3(xx,yy,z+0.1,'ob') %原始數據用『O』繪出

2、二元非等距插值
調用格式:zi=griddata(x,y,z,xi,yi,』指定插值方法』)
插值方法有: linear % 線性插值 (默認)
bilinear % 雙線性插值
cubic % 三次插值
bicubic % 雙三次插值
nearest % 最近鄰域插值
例:用隨機數據生成地貌圖再進行插值
程序:
x=rand(100,1)*4-2;
y=rand(100,1)*4-2;
z=x.*exp(-x.^2-y.^2);
ti=-2:.25:2;
[xi,yi]=meshgrid(ti,ti); % 加密數據
zi=griddata(x,y,z,xi,yi);% 線性插值
mesh(xi,yi,zi)
hold on
plot3(x,y,z,'o')

③ Matlab中插值函數

MATLAB中的插值函數為interp1,其調用格式為: yi= interp1(x,y,xi,'method')

其中x,y為插值點,yi為在被插值點xi處的插值結果;x,y為向量, 'method'表示採用的插值方法,MATLAB提供的插值方法有幾種: 'method'是最鄰近插值, 'linear'線性插值; 'spline'三次樣條插值; 'cubic'立方插值.預設時表示線性插值。

注意:所有的插值方法都要求x是單調的,並且xi不能夠超過x的范圍。

例:在一 天24小時內,從零點開始每間隔2小時測得的環境溫度數據分別為

12,9,9,10,18 ,24,28,27,25,20,18,15,13
問題:推測中午12點(即13點)時的溫度.

功能 一維數據插值(表格查找)。該命令對數據點之間計算內插值。它找出一元函數f(x)在中間點的數值。其中函數f(x)由所給數據決定。
x:原始數據點
Y:原始數據點
xi:插值點
Yi:插值點

(1)yi = interp1(x,y,xi,method)

用指定的演算法計算插值:
』nearest』:最近鄰點插值,直接完成計算;
』linear』:線性插值(預設方式),直接完成計算;
』spline』:三次樣條函數插值。
』cubic』:該方法保留單調性與數據的外形;

功能 二維數據內插值
(1)ZI = interp2(X,Y,Z,XI,YI,method)
返回矩陣ZI,其元素包含對應於參量XI 與YI(可以是向量、或同型矩陣) 的元素, 即Zi(i,j) ←[Xi(i,j),yi(i,j)]。用戶可以輸入行向量和列向量Xi 與Yi,此時,輸出向量Zi 與矩陣meshgrid(xi,yi)是同型的。
(2)ZI = interp2(Z,XI,YI)
預設地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一種情形進行計算。

用指定的演算法method 計算二維插值:
』linear』:雙線性插值演算法(預設演算法);
』nearest』:最臨近插值;
』spline』:三次樣條插值;
』cubic』:雙三次插值。

(4)VI = interp3(X,Y,Z,V,XI,YI,ZI,method)
找出由參量X,Y,Z決定的三元函數V=V(X,Y,Z)在點(XI,YI,ZI)的值。
%用指定的演算法method 作插值計算:
『linear』:線性插值(預設演算法);
『cubic』:三次插值;
『spline』:三次樣條插值;
『nearest』:最鄰近插值。

功能 數據格點
(1)ZI = griddata(x,y,z,XI,YI,method)
用二元函數z=f(x,y)的曲面擬合有不規則的數據向量x,y,z。griddata 將返回曲面z 在點(XI,YI)處的插值。曲面總是經過這些數據點(x,y,z)的輸入參量(XI,YI)通常是規則的格點(像用命令meshgrid 生成的一樣)。

用指定的演算法method 計算:
『linear』:基於三角形的線性插值(預設演算法);
『cubic』: 基於三角形的三次插值;
『nearest』:最鄰近插值法;
『v4』:MATLAB 4 中的griddata 演算法。

功能 三次樣條數據插值
格式
(1)yy = spline(x,y,xx)

功能 生成用於畫三維圖形的矩陣數據
格式 [X,Y] = meshgrid(x,y) 將由向量x,y(可以是不同方向的)指定的區域[min(x),max(x) , min(y) , max(y)] 用直線x=x(i),y=y(j) ( i=1,2,…,length(x) ,j=1,2,…,length(y))進行劃分。這樣,得到了length(x)*length(y)個點,
這些點的橫坐標用矩陣X 表示,X 的每個行向量與向量x 相同;這些點的縱坐標用矩陣Y 表示,Y 的每個列向量與向量y 相同。其中X,Y可用於計算二元函數z=f(x,y)與三維圖形中xy 平面矩形定義域的劃分或曲面作圖。

[X,Y] = meshgrid(x) %等價於[X,Y]=meshgrid(x,x)。
[X,Y,Z] = meshgrid(x,y,z) %生成三維陣列X,Y,Z,用於計算三元函數v=f(x,y,z)或三維容積圖。

④ 如何利用matlab實現多種插值

利用matlab實現多種插值:
用matlab自帶的多種功能進行常用插值(樣條插值,hermite插值,三次差值)呢?在完成一些習題後,我的總結如下:
1.如何實現三次樣條插值(spline插值)
特點:連續三次曲線逼近,最高次數為三次
法1:spline
x=[0,1,2,3,4,5,6,7,8,9,10]
y=[0,0.79,1.53,2.19,2.71,3.03,3.27,2.89,3.06,3.19,3.29];
進行三次樣條插值
xx=0:0.25:10; 取好繪圖取值點
yy=spline(x,y,xx);
plot(x,y,』o』,xx,yy); 繪制圖像

那麼如何獲得插值函數?且如果三次樣條插值有邊界條件時,應如何擬合插值函數?此時應採取法2
法2:csape
pp=csape(x,y,'complete',[0,0.0]);
disp(pp.coefs);

complete表示給定邊界條件為一階導數,[0,0]便是兩端點一階導數為0.常用的參數還有:
'second',給定邊界二階導數.
'variational',自然樣條(邊界二階導數為0)

運行結果:COEFS的含義是在Xi-Xi+1區間上的多項式是,例如COEFS數組第一行的意思是在X=0到X=1的區間上時表達式是-6.2652*(X-0)^3+0.9697*(X-0)^1+0.5;同理,可以得到在不同區間上的擬合函數

-6.2652 0.0000 0.9697 0.5000
1.8813 -0.9398 0.9227 0.5477
-0.4600 -0.4318 0.7992 0.6245
2.1442 -0.5146 0.7424 0.6708
繪制圖像:xi=1:0.25:10;
yi=ppval(pp,xi);
plot(x,y,'o',xi,yi);

matlab通用的插值函數為interp1,通過改變interp1的method參數,可以實現不同的插值方式。但spline函數與interp1函數在實現樣條插值時,均無法在規定邊界條件的情況下進行插值,此時要用到csape,csape的complete,second參數即可滿足常用邊界條件需求。如果需要擬合出具體的函數,則用yi.coefs的形式,yi為插值點的擬合值。最後,使用plot函數繪制擬合函數圖像。

閱讀全文

與matlab樣條插值演算法相關的資料

熱點內容
centos命令窗口 瀏覽:596
編譯器有幾個好用的 瀏覽:500
資料庫和網站如何搭載伺服器 瀏覽:154
網路流理論演算法與應用 瀏覽:795
java和matlab 瀏覽:388
釘釘蘋果怎麼下app軟體 瀏覽:832
php網站驗證碼不顯示 瀏覽:859
鋁膜構造柱要設置加密區嗎 瀏覽:344
考駕照怎麼找伺服器 瀏覽:884
阿里雲伺服器如何更換地區 瀏覽:972
手機app調音器怎麼調古箏 瀏覽:503
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:19
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:275
冒險島什麼伺服器好玩 瀏覽:543
如何在伺服器上做性能測試 瀏覽:794