這篇具有很好參考價(jià)值的文章主要介紹了matlab使用教程(20)—插值基礎(chǔ)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。
1.網(wǎng)格和散點(diǎn)樣本數(shù)據(jù)
????????插值是在位于一組樣本數(shù)據(jù)點(diǎn)域中的查詢位置進(jìn)行函數(shù)值估算的方法。函數(shù)值是根據(jù)最接近查詢點(diǎn)的樣本數(shù)據(jù)點(diǎn)計(jì)算的。MATLAB 根據(jù)樣本數(shù)據(jù)的結(jié)構(gòu),可以執(zhí)行兩種插值。樣本數(shù)據(jù)可以形成網(wǎng)格,也可以是分散的。
????????網(wǎng)格化的樣本數(shù)據(jù)使得插值更加高效,因?yàn)橛薪M織的數(shù)據(jù)結(jié)構(gòu)使得 MATLAB 能夠輕松找到最靠近查詢點(diǎn)的樣本數(shù)據(jù)點(diǎn)。然而,對(duì)散點(diǎn)數(shù)據(jù)進(jìn)行插值需要數(shù)據(jù)點(diǎn)的“Delaunay 三角剖分”,這就增加了一重計(jì)算。因此,如果您的數(shù)據(jù)可以逼近為一個(gè)網(wǎng)格,則與散點(diǎn)插值相比,網(wǎng)格插值可以節(jié)省大量的計(jì)算時(shí)間和內(nèi)存使用量。
????????以下主題討論了兩種插值方式:
????????? “插入網(wǎng)格數(shù)據(jù)” 討論軸對(duì)齊網(wǎng)格格式的樣本數(shù)據(jù)的一維插值和 N 維插值:
????????? “內(nèi)插散點(diǎn)數(shù)據(jù)” 討論散點(diǎn)數(shù)據(jù)的 N 維插值: ?
1.1 插值與曲線擬合
????????MATLAB 中提供的插值方法可創(chuàng)建經(jīng)過(guò)樣本數(shù)據(jù)點(diǎn)的插值函數(shù)。也就是說(shuō),如果查詢一個(gè)樣本位置的插值函數(shù),會(huì)取回精確的樣本數(shù)據(jù)值而不是逼近。對(duì)比插值,曲線和曲面擬合算法則不需要通過(guò)樣本數(shù)據(jù)點(diǎn)。有關(guān)曲線擬合的詳細(xì)信息,請(qǐng)參閱 Curve Fitting Toolbox。
1.2 網(wǎng)格逼近技術(shù)
????????在某些情況下,可能需要數(shù)據(jù)的逼近網(wǎng)格。例如,網(wǎng)格具有的點(diǎn)可以位于曲線上。如果數(shù)據(jù)是基于經(jīng)緯度的,則可能出現(xiàn)這樣的數(shù)據(jù)集:
????????使用曲線網(wǎng)格,您實(shí)際上是處理一組散點(diǎn)數(shù)據(jù),并且必須使用計(jì)算成本更高的散點(diǎn)插值函數(shù)對(duì)這些值進(jìn)行插值。然而,雖然輸入數(shù)據(jù)無(wú)法直接網(wǎng)格化,但有時(shí)可以在合適的區(qū)間用直網(wǎng)格線來(lái)逼近曲線網(wǎng)格:
?
????????您可以通過(guò)創(chuàng)建一組具有適當(dāng)間距的網(wǎng)格向量來(lái)創(chuàng)建逼近網(wǎng)格。用直線逼近曲線網(wǎng)格的優(yōu)點(diǎn)是可獲得基于網(wǎng)格的插值的性能,但代價(jià)是數(shù)據(jù)略微失真。有關(guān)創(chuàng)建網(wǎng)格向量的詳細(xì)信息,請(qǐng)參閱“網(wǎng)格表示法” 。
2.插入網(wǎng)格數(shù)據(jù)
????????網(wǎng)格數(shù)據(jù)由形成網(wǎng)格的等間距點(diǎn)上的值或測(cè)量值組成。網(wǎng)格數(shù)據(jù)應(yīng)用于許多領(lǐng)域,如氣象學(xué)、測(cè)繪學(xué)和醫(yī)學(xué)成像。在這些領(lǐng)域,經(jīng)常以固定空間間隔取測(cè)量值,且可能隨時(shí)間進(jìn)行測(cè)量。這些有序的數(shù)據(jù)網(wǎng)格的范圍可以從一維(對(duì)于簡(jiǎn)單時(shí)間序列)到四維(對(duì)于隨時(shí)間變化的三維體測(cè)量)或更高維。網(wǎng)格數(shù)據(jù)的一些示例有:
????????? 一維:隨時(shí)間變化的股票價(jià)格
????????? 二維:曲面的溫度
????????? 三維:大腦的 MRI 圖像
????????? 四維:隨時(shí)間變化的海洋水體測(cè)量值
????????在所有這些應(yīng)用中,基于網(wǎng)格的插值可高效地將數(shù)據(jù)的有用性擴(kuò)展到未進(jìn)行測(cè)量的點(diǎn)。例如,如果您有某股票的小時(shí)價(jià)格數(shù)據(jù),可以使用插值來(lái)逼近每 15 分鐘的價(jià)格。
2.1 MATLAB 網(wǎng)格插值函數(shù)
????????MATLAB 提供幾種用于基于網(wǎng)格插值的工具:
????????1)網(wǎng)格創(chuàng)建函數(shù)
????????meshgrid 和
ndgrid
函數(shù)創(chuàng)建各種維度的網(wǎng)格。
meshgrid
可以創(chuàng)建二維或三維網(wǎng)格,而
ndgrid 可以創(chuàng)建任意維數(shù)的網(wǎng)格。這些函數(shù)使用不同輸出格式返回網(wǎng)格。您可以使用
pagetranspose(從 R2020b開始)或
permute
函數(shù)在這些網(wǎng)格格式之間進(jìn)行轉(zhuǎn)換,以交換網(wǎng)格的前兩個(gè)維度。
????????2)插值函數(shù):
????????interp 系列函數(shù)包括
interp1
、
interp2
、
interp3
和
interpn。每個(gè)函數(shù)都設(shè)計(jì)用于對(duì)具有特定維數(shù)的數(shù)據(jù)進(jìn)行插值。
interp2
和
interp3
使用
meshgrid
格式的網(wǎng)格,而
interpn
使用
ndgrid 格式的網(wǎng)格。
????????3)插值對(duì)象
????????griddedInterpolant 對(duì)象支持對(duì) ndgrid 格式的數(shù)據(jù)進(jìn)行任意維數(shù)的插值。這些對(duì)象還支持多值插值(從 R2021a 開始),其中每個(gè)網(wǎng)格點(diǎn)可以有多個(gè)關(guān)聯(lián)的值。與使用
interp
函數(shù)相比,使用
griddedInterpolant
對(duì)象具有內(nèi)存和性能優(yōu)勢(shì)。
griddedInterpolant
為插值對(duì)象的重復(fù)查詢提供了顯著的性能改進(jìn),而
interp 函數(shù)在每次調(diào)用時(shí)都會(huì)執(zhí)行新計(jì)算。此外,griddedInterpolant 以內(nèi)存高效格式存儲(chǔ)采樣點(diǎn),并以多線程方式利用多核計(jì)算機(jī)處理器。
2.2 網(wǎng)格表示法
????????MATLAB 允許按以下三種方式之一表示網(wǎng)格:完整網(wǎng)格、簡(jiǎn)潔網(wǎng)格或默認(rèn)網(wǎng)格。默認(rèn)網(wǎng)格和簡(jiǎn)潔網(wǎng)格主要是分別為了方便使用和提高效率。
? ? ? ? 1)完整網(wǎng)格
????????完整網(wǎng)格是一種以顯式方式定義所有點(diǎn)的網(wǎng)格。ndgrid
和 meshgrid 的輸出定義一個(gè)完整網(wǎng)格。您可以創(chuàng)建均勻的完整網(wǎng)格,其中每個(gè)維度中的點(diǎn)具有相等的間距,或創(chuàng)建非均勻的完整網(wǎng)格,其中一個(gè)或多個(gè)維度的間距不同。均勻網(wǎng)格在不同維度上可以有不同間距,但每個(gè)維度內(nèi)的間距是固定的。
????????均勻完整網(wǎng)格的示例如下:
[X,Y] = meshgrid([1 2 3],[3 6 9 12])
X =
1 2 3
1 2 3
1 2 3
1 2 3
Y =
3 3 3
6 6 6
9 9 9
12 12 12
? ? ? ? 2)簡(jiǎn)潔網(wǎng)格
????????在處理大型網(wǎng)格時(shí),顯式定義網(wǎng)格中的每個(gè)點(diǎn)會(huì)消耗大量?jī)?nèi)存。簡(jiǎn)潔網(wǎng)格表示法無(wú)需完整網(wǎng)格的內(nèi)存使用量。簡(jiǎn)潔網(wǎng)格表示法只存儲(chǔ)網(wǎng)格向量(每個(gè)維度對(duì)應(yīng)一個(gè)),而不存儲(chǔ)整個(gè)網(wǎng)格。各網(wǎng)格向量共同隱式定義了網(wǎng)格。事實(shí)上,
meshgrid
和 ndgrid 的輸入是網(wǎng)格向量,這些函數(shù)復(fù)制網(wǎng)格向量以形成完整網(wǎng)格。簡(jiǎn)潔網(wǎng)格表示法使您能夠繞過(guò)網(wǎng)格創(chuàng)建,并將網(wǎng)格向量直接提供給插值函數(shù)。例如,假設(shè)有兩個(gè)向量,
x1 = 1:3
和
x2 = 1:5
??梢詫⑦@些向量視為沿
x1
方向的一組坐標(biāo)和沿
x2 方向的一組坐標(biāo),如下所示:
????????每個(gè)箭頭指向一個(gè)位置。使用這兩個(gè)向量可以定義一組網(wǎng)格點(diǎn),其中一組坐標(biāo)由 x1 給定,另一組坐標(biāo)由x2
給定。在復(fù)制網(wǎng)格向量時(shí),它們構(gòu)成了組成完整網(wǎng)格的兩個(gè)坐標(biāo)數(shù)組:
????????您的輸入網(wǎng)格向量可能是單調(diào)或非單調(diào)的。單調(diào)向量所含的值在該維中遞增,或在該維中遞減。反之,非單調(diào)向量含有的值會(huì)上下波動(dòng)。如果輸入網(wǎng)格向量是非單調(diào)的,如
[2 4 6 3 1]
,則
[X1,X2] = ndgrid([2?
4 6 3 1])
輸出非單調(diào)網(wǎng)格。如果要將網(wǎng)格傳遞給其他 MATLAB 函數(shù),網(wǎng)格向量應(yīng)當(dāng)是單調(diào)的。
sort 函數(shù)可用于確保單調(diào)性。
????????3)默認(rèn)網(wǎng)格
????????在某些應(yīng)用中,只有網(wǎng)格點(diǎn)的值才是重要的,而網(wǎng)格點(diǎn)之間的距離并不重要。例如,大多數(shù) MRI 掃描收集的數(shù)據(jù)在所有方向上都是等間距的。在這種情況下,您可以允許插值函數(shù)自動(dòng)生成默認(rèn)網(wǎng)格表示來(lái)處理數(shù)據(jù)。為此,無(wú)需提供插值函數(shù)的網(wǎng)格輸入。當(dāng)您不提供網(wǎng)格輸入時(shí),該函數(shù)會(huì)自動(dòng)將數(shù)據(jù)視為位于單位間距的網(wǎng)格上。該函數(shù)在執(zhí)行時(shí)創(chuàng)建此單位間距的網(wǎng)格,省去您自己創(chuàng)建網(wǎng)格的麻煩。
2.3 示例:二維網(wǎng)格上的溫度插值
????????假設(shè)在一個(gè)曲面上以 5 厘米固定間隔收集溫度數(shù)據(jù),在每個(gè)方向上延伸 20 厘米。使用 meshgrid 創(chuàng)建完整網(wǎng)格。
X =
0 5 10 15 20
0 5 10 15 20
0 5 10 15 20
0 5 10 15 20
0 5 10 15 20
Y =
0 0 0 0 0
5 5 5 5 5
10 10 10 10 10
15 15 15 15 15
20 20 20 20 20
????????每個(gè)網(wǎng)格點(diǎn)的坐標(biāo) (x,y) 表示為 X
和
Y
矩陣中的對(duì)應(yīng)元素。第一個(gè)網(wǎng)格點(diǎn)由
[X(1) Y(1)]
給出,即
[0 0],下一個(gè)網(wǎng)格點(diǎn)由
[X(2) Y(2)]
給出,即
[0 5],依此類推。現(xiàn)在,創(chuàng)建一個(gè)矩陣來(lái)表示網(wǎng)格上的溫度測(cè)量值,然后將數(shù)據(jù)繪制為曲面。
T = [1 1 10 1 1;
1 10 10 10 10;
100 100 1000 100 100;
10 10 10 10 1;
1 1 10 1 1];
surf(X,Y,T)
view(2)

????????雖然中心網(wǎng)格點(diǎn)的溫度很高,但從原始數(shù)據(jù)來(lái)看,其位置和對(duì)周圍網(wǎng)格點(diǎn)的影響并不明顯。
要將數(shù)據(jù)分辨率提高 10 倍,請(qǐng)使用
interp2 將溫度數(shù)據(jù)插值到使用 0.5 厘米間隔的更精細(xì)的網(wǎng)格上。再次使用
meshgrid
創(chuàng)建由矩陣
Xq
和
Yq
表示的更精細(xì)的網(wǎng)格。然后,將
interp2 與原始網(wǎng)格、溫度數(shù)據(jù)和新網(wǎng)格點(diǎn)結(jié)合使用,繪制生成的數(shù)據(jù)。默認(rèn)情況下,
interp2
在每個(gè)維度中使用線性插值。
[Xq,Yq] = meshgrid(0:0.5:20);
Tq = interp2(X,Y,T,Xq,Yq);
surf(Xq,Yq,Tq)
view(2)

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-664831.html
對(duì)溫度數(shù)據(jù)進(jìn)行插值可以增加圖像的細(xì)節(jié),并大大提高測(cè)量區(qū)域內(nèi)數(shù)據(jù)的有用性。
2.4 網(wǎng)格插值方法對(duì)比
????????MATLAB 中基于網(wǎng)格的插值函數(shù)和對(duì)象提供幾種不同插值方法。在選擇插值方法時(shí),切記有些方法比其他方法需要更多的內(nèi)存或更長(zhǎng)的計(jì)算時(shí)間。您需要權(quán)衡這些資源,以實(shí)現(xiàn)結(jié)果所需要的平滑度。下表給出了應(yīng)用于同一一維數(shù)據(jù)的每種插值方法的預(yù)覽,并概述了每種方法的優(yōu)點(diǎn)、取舍和要求。



?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-664831.html
?
到了這里,關(guān)于matlab使用教程(20)—插值基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!
本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!