M插值之我見

2021-08-02 16:56:31 字數 1914 閱讀 3292

問:1.matlab讀資料  (c讀資料)

2.超出邊界如何處理                自:按旁邊斜率處理    眾:?

見: 3.減少重複程式interp,單獨拉出來

4.減少輸入量,矩陣長度自己計算

測試案例:

clc;

clear;

%%%一維插值測試

a1=[0;1;2;3;4;5];

a2=[1.2;2.4;3.6;4.8;6.0;7.2];    

%%%二維插值測試

a21=[2;4;6;8];

a22=[1,2,3,4,5];

a23=[2,3,4,5;

3,4,5,6;

4,5,6,7;

5,6,7,8;

6,7,8,9];

%%%三維插值測試

a31=[1,2,3];

a32=[2;4;6;8];

a33=[1,2,3,4,5];

a34=[2,3,4,5;

3,4,5,6;

4,5,6,7;

5,6,7,8;

6,7,8,9];

a35=[2,3,4,5;

3,4,5,6;

4,5,6,7;

5,6,7,8;

6,7,8,9];

a36=[2,3,4,5;

3,4,5,6;

4,5,6,7;

5,6,7,8;

6,7,8,9];

d(:,:,1)=a34;

d(:,:,2)=a35;

d(:,:,3)=a36;

%%插值子函式

function y=ma_interp(x,a)

[row,col]=size(a);

if row>=col

n=row;

else n=col;

end       %判斷數量,%判斷橫豎,不確定來的資料是一行還是一豎。

if(x=a(n))

i=n-1;

else 

for i=1:n

if(x>=a(i)&&x一維插值

function y=ma_interp11(a,a,b)

i=ma_interp(a,a);

y=(a-a(i))/(a(i+1)-a(i))*(b(i+1)-b(i))+b(i);

二維插值

function y=ma_interp22(x1,x2,a,b,c)%先橫後縱

%%%橫列

i=ma_interp(x1,a);

%%%豎列

j=ma_interp(x2,b);

%%%計算

y1=(x1-a(i))/(a(i+1)-a(i))*(c(j,i+1)-c(j,i))+c(j,i);

y=(x2-b(j))/(b(j+1)-b(j))*(c(j+1,i)-c(j,i))+y1;

%%三維插值

function y=ma_interp33(x1,x2,x3,a,b,c,d)

i=ma_interp(x1,a);

j=ma_interp(x2,b);

k=ma_interp(x3,c);

y1=(x1-a(i))/(a(i+1)-a(i))*(d(j,i+1,k)-d(j,i,k))+d(j,i,k);

y2=(x2-b(j))/(b(j+1)-b(j))*(d(j+1,i,k)-d(j,i,k))+y1;

y=(x3-c(k))/(c(k+1)-c(k))*(d(j,i,k+1)-d(j,i,k))+y2;

c語言  利用while

if (ma>andm[nma - 1])

else

}for (j = 0; j < nalpha; j++)

f1 = one_interp(andaf,mid1, alpha,1);

插值查詢 插值搜尋

這是一種和二分比較相似的查詢的演算法,不過不同的是,對於分布比較均勻的較大的陣列,插值查詢有時能夠一次就搜尋到位.為什麼能夠這麼快呢 看網上沒有什麼關於這種演算法的描述,我就來描述一下吧.首先要知道一點,這種搜尋方式只能夠針對順序表進行,再乙個要理解順序表中的乙個特點,在順序表中查詢是否存在乙個值,...

hermite插值 分段插值 Hermite插值

1.分段二次多項式插值 試用分段 4段 二次多項式插值來近似 0,1 區間上的 runge 函式 1 取區間的 8 等分點,計算插值節點處的函式值 2 每次取 3 個相鄰的等分點為一組,呼叫 polyinterp 函式,計算繪圖求值點 3 繪圖.2.hermite插值 編寫程式,繪製繪製多項式 p ...

插值法(拉格朗日插值和牛頓插值)

牛頓插值 defnewton interpolation x,y,init sum y 0 temp np.zeros len x len x 將第一行賦值 for i in range 0,len x temp i,0 y i temp sum 1.0 for i in range 1,len x...