一、matlab插值比較-griddata/interp2
最近在使用matlab插值,發(fā)現(xiàn)采用griddata計算速度太慢,正好是網(wǎng)格數(shù)據(jù)就將計算結(jié)果與interp2開展了對比,發(fā)現(xiàn)速度差別特別大。
%%
tic
FusioG = griddata(lon,lat,FusioGr,data(:,2),data(:,3)); ?
toc
disp(['運行時間: ',num2str(toc)]);
時間已過 16.637986 秒。
運行時間: 16.64
tic
FusioG1 = interp2(lon,lat,FusioGr,data(:,2),data(:,3));
toc
disp(['運行時間: ',num2str(toc)]);
時間已過 0.085138 秒。
運行時間: 0.085863
plot(FusioG - FusioG1 ,'r.')
A ?= FusioG - FusioG1;
rms(A)
ans =
? ?NaN
mean(A)
ans =
? ?NaN
max(A)
ans =
? ? 0.6278
?min(A)
ans =
? ?-0.7366
兩種結(jié)果插值成圖
通過對比,發(fā)現(xiàn)采用interp2插值時運算時間從griddata的16.64秒降為0.085863。
插值rms和mean均為NaN,主要是大部分的節(jié)點的值為0.000546720777908405附近,無法計算。
差值max=?0.6278;差值min =?-0.7366,表明兩者插值還是有些許的不同。插值結(jié)果對于總體量31萬個點而言可以近似相等。
二維插值與MATLAB實例解析
二維插值-MATLAB_感謝地心引力的博客-CSDN博客_二維插值
百度安全驗證? ?Matlab之插值函數(shù)匯總及使用說明
一、插值節(jié)點為網(wǎng)格節(jié)點
二、插值節(jié)點為散亂節(jié)點
Addition:
(1)學(xué)會查看matlab幫助文檔
(2)matlab腳本類型
(3)matlab三維繪圖函數(shù)
二維插值,簡單來說就是節(jié)點二維、插值函數(shù)二維,形如z = f ( x , y ) z=f(x,y)z=f(x,y)。
??為什么要插值呢?假如我們要根據(jù)已知的二維數(shù)據(jù)來繪制對應(yīng)的三維曲面圖像,就需要很多點的x、y、z坐標(biāo),但給定的數(shù)據(jù)一般比較少,不能僅僅通過點數(shù)據(jù)畫出三維圖形。又或者要獲取未知點的坐標(biāo)值(大概的)。
一、插值節(jié)點為網(wǎng)格節(jié)點
?網(wǎng)格節(jié)點,聽命字就知道它是比較規(guī)則整齊的點了。相當(dāng)于在xyz平面內(nèi),一條條整齊的平行于x,y軸的直線相交,再在z軸方向?qū)?yīng)一個值。
比如這樣:
?MATLAB插值命令:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? z=interp2(x0?,y0?,z0?,x,y,′method′)
其中:
x0,y0為已知節(jié)點,z是對應(yīng)的值;
x0,y0分別為m維、n維向量,z為m·n矩陣;??
x,y是要插值的節(jié)點,z返回對應(yīng)的插值得到的值;
method是插值方法,和一維插值相同:
'nearest‘: 最近項插值
'linear': 線性插值
'spline': 立方樣條插值
'cubic': 立方插值
?
close all
clear,clc
x=100:100:500; %已知節(jié)點數(shù)據(jù)
y=100:100:400;
z=[636 697 624 478 450
698 712 630 478 420
680 674 598 412 400
662 626 552 334 310];
pp=csape({x,y},z') %采用3次樣條插值
xi=100:10:500;yi=100:10:400; %要插值的點
cz=fnval(pp,{xi,yi}); %返回字(xi,yi)處的值
[i,j]=find(cz==max(max(cz))) %找最高點的地址
x=xi(i),y=yi(j),zmax=cz(i,j) %求最高點的坐標(biāo)
二、插值節(jié)點為散亂節(jié)點
散亂節(jié)點:給出了一些3維空間數(shù)據(jù)點的x、y、z坐標(biāo),但不像網(wǎng)格節(jié)點那樣整齊。例1和例2一對比就明白了。使用函數(shù)griddata(),常見形式和簡要說明如下:
(1) vq = griddata( x,y, v ,xq, yq)
使v=fx,y)形式的曲面與向量(xy.v)中的散點數(shù)據(jù)擬合。gridata函數(shù)在(xq,yq)指定的查詢點對曲面進(jìn)行插值并返回插入的值vq。曲面始終穿過×和y定義的數(shù)據(jù)點。
(2) vq = griddata(x,y,z , v ,xq,yq,zq)擬合v= f(x,y,z)形式的超曲面。
(3)vq = griddata(_,method)
使用上述語法中的任何輸入?yún)?shù)指定計算vq所用的插值方法。method可以是'linear'、'nearest 、'natural'、 'cubic'或'v4’。默認(rèn)方法為‘linear'。
(4)[Xq, Yq,vq] = griddata(x,y,v ,xq,yq)或[Xq,Yq, vq] = griddata(x,y ,v , xq, yq,method)
還返回Xq和Yq,其中包含查詢點的網(wǎng)格坐標(biāo)。
更多內(nèi)容請查閱幫助文檔。
?
close all
clc, clear
x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];
y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];
z=-[4,8,6,8,6,8,8,9,9,8,8,9,4,9];
xmm=minmax(x) %求x的最小值和最大值
ymm=minmax(y) %求y的最小值和最大值
xi=xmm(1):xmm(2); %指定查詢點(插值點)
yi=ymm(1):ymm(2);
%使 v = f(x,y) 形式的曲面與向量 (x,y,v) 中的散點數(shù)據(jù)擬合。
% griddata 函數(shù)在 (xq,yq) 指定的查詢點對曲面進(jìn)行插值并返回插入的值 vq。
% 曲面始終穿過 x 和 y 定義的數(shù)據(jù)點。
zi1=griddata(x,y,z,xi,yi','cubic'); %立方插值
zi2=griddata(x,y,z,xi,yi','nearest'); %最近點插值
zi=zi1; %立方插值和最近點插值的混合插值的初始值
zi(isnan(zi1))=zi2(isnan(zi1)) %把立方插值中的不確定值換成最近點插值的結(jié)果
subplot(1,2,1), plot(x,y,'*')
subplot(1,2,2), mesh(xi,yi,zi)
文章來源:http://www.zghlxwxcb.cn/news/detail-472373.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-472373.html
到了這里,關(guān)于matlab插值比較-griddata/interp2的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!