Matlab線性插值

2022-12-03 16:36:02 字數 3016 閱讀 3464

已知離散點上的資料集,即已知在點集x上對應的函式值y,構造乙個解析函式(其圖形為一曲線)通過這些點,並能夠求出這些點之間的值,這一過程稱為一維插值。

matlab命令:yi=interp1(x, y, xi, method)

該命令用指定的演算法找出乙個一元函式,然後以給出xi處的值。xi可以是乙個標量,也可以是乙個向量,是向量時,必須單調,method可以下列方法之一:

'nearest':最近鄰點插值,直接完成計算;

'spline':三次樣條函式插值;

'linear':線性插值(預設方式),直接完成計算;

'cubic':三次函式插值;

對於[min,max]外的值,matlab使用外推的方法計算數值。

下面是第乙個例子:

表一室內溫度隨時間的變化

用三次樣條插值、三次插值、線性插值、最近鄰點插值分別求出表一中室內6:30—17:30之間每隔2各點的近似溫度,並對四種插值方法下的結果進行比較。

t=6:2:18;

t=[18.0 20.0 22.0 25.0 30.0 28.0 24.0];

tt=6.5:2:17.5;%使用不同的方法進行一維插值

yi_spline=interp1(t,t,tt,'spline') %三次樣條插值

yi_cubic=interp1(t,t,tt,'cubic三次多項式插值

yi_linear=interp1(t,t,tt線性插值

yi_nearest=interp1(t,t,tt,'nearest') %最近鄰點插值

%繪製影象進行對比

plot(t,t,'ko');

grid on;hold on;

plot(tt,yi_spline,'b',tt,yi_cubic,'g',tt,yi_linear,'r-',tt,yi_nearest,'k');

legend('原始資料','三次樣條插值','三次插值','線性插值','最近鄰點插值',2);

xlabel('時間/t');ylabel('室內溫度(t)/攝氏度');

title('四種插值方法的比較 ')

結果:yi_spline =

18.5020 20.4986 22.5193 26.3775 30.2051 26.8178

yi_cubic =

18.5000 20.4812 22.6305 26.3086 29.8125 27.2344

yi_linear =

18.5000 20.5000 22.7500 26.2500 29.5000 27.0000

yi_nearest =

18 20 22 25 30 28

**:下面是第二個例子:

t=1900:10:1990;

p=[75.995,91.972,105.

711,123.203,131.669,150.

697,179.323,203.212,226.

505,249.633];

x=1900:0.01:1990;%使用不同的方法進行一維插值

yi_linear=interp1(t,p,x); %線性插值

yi_spline=interp1(t,p,x,'spline');%三次樣條插值

yi_cubic=interp1(t,p,x,'cubic');%三次多項式插值

yi_v5cubic=interp1(t,p,x,'v5cubic');%matlab5中使用的三次多項式插值

%繪製影象對比

%subplot是將多個圖畫到乙個平面上的工具。其中,m表示是圖排成m行,n表示圖排成n列,也就是整個figure中有n個圖是排成一行的,一共m行,如果第乙個數字是2就是表示2行圖。p是指你現在要把曲線畫到figure中哪個圖上,最後乙個如果是1表示是從左到右第乙個位置。

subplot(2,1,1);

plot(t,p,'ko');

hold on;

plot(x,yi_linear,'g','linewidth',1.5);grid on;

plot(x,yi_spline,'y','linewidth',1.5);

title('linear vs spline ')

subplot(2,1,2);

plot(t,p,'ko');

hold on

plot(x,yi_cubic,'g','linewidth',1.5);grid on;

plot(x,yi_v5cubic,'y','linewidth',1);

title('cubic vs v5cubic ');

%建立新圖形視窗

figure

yi_nearest=interp1(t,p,x,'nearest');%最鄰近插值法

plot(t,p,'ko');

hold on

plot(x,yi_nearest,'g','linewidth',1.5);grid on;

title('nearest method');

%以下是根據擬合估計

msg='year cubic linear nearest spline';

for i=0:8

n=10*i;

year=1905+n;

pop(i+1,1)=year;

pop(i+1,2)=yi_cubic((year-1900)/0.01+1);

pop(i+1,3)=yi_linear((year-1900)/0.01+1);

pop(i+1,4)=yi_nearest((year-1900)/0.01+1);

pop(i+1,5)=yi_spline((year-1900)/0.01+1);

endp=round(pop);

disp(msg)

disp(p)

由此可見,各種插值的優劣,在速度上,nearest最快,然後是linear再到cubic,最慢的是splic.但是精度和曲線的平滑度恰好相反,nearest甚至不連續~~

系統預設的是linear

基於 MATLAB 的函式的插值方法

6.1 插值問題及其誤差 6.1.2 與插值有關的matlab 函式 一 poly2sym 函式 呼叫格式一 poly2sym c 呼叫格式二 f1 poly2sym c,v 或 f2 poly2sym c,sym v 二 polyval 函式 呼叫格式 y polyval p,x 三 poly 函...

實驗1拉格朗日插值與牛頓插值

西華數學與計算機學院上機實踐報告 一 目的 1 通過本實驗加深對拉格朗日插值和牛頓插值法構造過程的理解 2 能對上述兩種插值法提出正確的演算法描述程式設計實現。二 內容與設計思想 編制乙個程式,分別用拉格朗日插值法和牛頓插值法求解某點的函式近似值。已知y f x 的資料表如下,求t 0.63處的函式...

matlab線性規劃練習

第11次課 1 某工具機廠生產甲 乙兩種工具機,每台銷售後的利潤分別為 4000 元與 3000 元 生產甲工具機需用a b 機器加工,加工時間分別為每台 2 小時和 1 小時 生產乙工具機需用a b c 三種機器加工,加工時間為每台各一小時。若每天可用於加工的機器時數分別為a 機器 10 小時 b...