戰(zhàn)指南)
1. 從一次數(shù)據(jù)“補(bǔ)洞”說起為什么我們需要插值那天下午我正處理一組來自傳感器的溫度數(shù)據(jù)準(zhǔn)備用它來校準(zhǔn)一個(gè)熱力學(xué)模型。數(shù)據(jù)記錄得不錯(cuò)但偏偏在幾個(gè)關(guān)鍵的時(shí)間點(diǎn)上傳感器因?yàn)槎虝旱男盘柛蓴_傳回了一串“NaN”。看著圖表上那幾個(gè)刺眼的缺口模型擬合的曲線瞬間變得七扭八歪。直接刪除這些點(diǎn)那會損失寶貴的樣本尤其在數(shù)據(jù)本就稀疏的情況下。用前后數(shù)據(jù)的平均值簡單填充這聽起來合理但對于溫度這種連續(xù)變化的物理量這種粗暴的做法會引入不真實(shí)的階躍導(dǎo)致后續(xù)的頻譜分析或微分計(jì)算出現(xiàn)嚴(yán)重偏差。就在我糾結(jié)是手動(dòng)畫條線連起來還是用更“科學(xué)”的方法時(shí)我打開了Matlab輸入了interp1這個(gè)函數(shù)。幾行代碼之后缺口被一條平滑的曲線優(yōu)雅地連接起來數(shù)據(jù)恢復(fù)了連續(xù)性模型也得以順利運(yùn)行。這個(gè)看似簡單的“補(bǔ)洞”操作背后正是插值算法在發(fā)揮作用。簡單來說插值就是根據(jù)已知的、離散的數(shù)據(jù)點(diǎn)去估計(jì)或構(gòu)造出未知點(diǎn)處數(shù)據(jù)值的過程。它假設(shè)數(shù)據(jù)點(diǎn)之間存在著某種內(nèi)在的、連續(xù)的函數(shù)關(guān)系。在Matlab的世界里這遠(yuǎn)不止是“連點(diǎn)成線”的繪圖工具它是信號處理、圖像縮放、地理信息系統(tǒng)GIS、科學(xué)計(jì)算乃至金融建模中不可或缺的基礎(chǔ)技術(shù)。無論是將低分辨率圖像放大圖像插值將稀疏的測量點(diǎn)生成連續(xù)的地形曲面如克里金空間插值還是在仿真中從離散時(shí)間步長獲取任意時(shí)刻的系統(tǒng)狀態(tài)如你在搜索中看到的“matlab做離散時(shí)間系統(tǒng)”插值都扮演著橋梁的角色。如果你正在用Matlab處理實(shí)驗(yàn)數(shù)據(jù)、進(jìn)行仿真分析比如“有感foc matlab仿真教程”或“現(xiàn)代永磁同步電機(jī)控制原理及matlab仿真”或者從事任何需要從有限樣本重建連續(xù)信息的工作那么深入理解Matlab中的插值工具箱就不是“錦上添花”而是“雪中送炭”了。本文將從一個(gè)實(shí)踐者的角度拆解Matlab中幾種核心插值方法的原理、適用場景以及那些官方文檔里不會寫的“坑”。2. 一維插值interp1函數(shù)家族深度剖析一維插值是最常見的情形即我們有一組(x, y)點(diǎn)想得到新xq位置上的yq值。Matlab 提供了interp1函數(shù)來完成這個(gè)任務(wù)其基本語法是vq interp1(x, v, xq, method)。其中x和v是已知數(shù)據(jù)點(diǎn)和對應(yīng)的值xq是查詢點(diǎn)method決定了插值的“性格”。2.1 線性插值快速可靠的默認(rèn)選擇當(dāng)你沒有指定方法時(shí)interp1默認(rèn)使用‘linear’。它的思想極其直觀在兩個(gè)已知數(shù)據(jù)點(diǎn)之間畫一條直線查詢點(diǎn)的值就落在這條直線上。x [0, 1, 3, 4, 6]; v [0, 2, 1, 4, 3]; xq 0:0.1:6; vq_linear interp1(x, v, xq, linear); plot(x, v, o, xq, vq_linear, -);為什么選它線性插值計(jì)算速度極快結(jié)果永遠(yuǎn)在數(shù)據(jù)點(diǎn)的最大值和最小值之間不會產(chǎn)生意外的振蕩這很重要。對于大量數(shù)據(jù)的快速預(yù)覽、對平滑性要求不高的場合或者數(shù)據(jù)本身噪聲較大、過于復(fù)雜的插值反而會擬合噪聲時(shí)線性插值是穩(wěn)妥的首選。實(shí)操心得與坑點(diǎn)x必須單調(diào)這是所有interp1方法的前提。如果你的x是亂序的必須先排序。一個(gè)常見的錯(cuò)誤是時(shí)間序列數(shù)據(jù)因?yàn)橛涗泦栴}導(dǎo)致時(shí)間戳亂序。[x_sorted, sort_idx] sort(x); v_sorted v(sort_idx); % 務(wù)必同步排序v vq interp1(x_sorted, v_sorted, xq, linear);外插行為默認(rèn)情況下對于xq超出x范圍的部分interp1會返回NaN。如果你希望進(jìn)行外推需要設(shè)置‘extrap’參數(shù)。vq interp1(x, v, xq, linear, extrap); % 線性外推但請極度謹(jǐn)慎使用外推線性外推僅在非常靠近數(shù)據(jù)邊緣、且有物理依據(jù)時(shí)相對可靠。盲目外推極易導(dǎo)致荒謬的結(jié)果。2.2 樣條插值追求光滑曲線的利器當(dāng)你的數(shù)據(jù)源自一個(gè)光滑連續(xù)的過程如物體運(yùn)動(dòng)軌跡、模擬信號并且你希望插值結(jié)果也同樣光滑連續(xù)的一階、二階導(dǎo)數(shù)時(shí)樣條插值‘spline’就派上用場了。它使用分段三次多項(xiàng)式連接數(shù)據(jù)點(diǎn)并在連接點(diǎn)處保證函數(shù)值、一階和二階導(dǎo)數(shù)的連續(xù)性。vq_spline interp1(x, v, xq, spline);為什么選它光滑性是最大優(yōu)勢。如果你后續(xù)需要對插值后的數(shù)據(jù)進(jìn)行求導(dǎo)比如從位移求速度、加速度樣條插值的結(jié)果會比線性插值合理得多。在圖形繪制、CAD建模中廣泛應(yīng)用。實(shí)操心得與坑點(diǎn)“過沖”現(xiàn)象這是樣條插值最著名的坑。如果數(shù)據(jù)變化劇烈或存在突變樣條為了保持光滑可能會在數(shù)據(jù)點(diǎn)之間產(chǎn)生超出原始數(shù)據(jù)范圍的振蕩即“過沖”。例如用樣條插值擬合一個(gè)階躍信號會在邊緣處產(chǎn)生虛假的波動(dòng)。邊界條件Matlab的‘spline’方法使用所謂的“非扭結(jié)”邊界條件。簡單理解它假設(shè)數(shù)據(jù)在端點(diǎn)處的三階導(dǎo)數(shù)為零這通常能產(chǎn)生看起來自然的曲線。但如果你有特殊的邊界條件如固定端點(diǎn)導(dǎo)數(shù)可能需要使用更底層的spline函數(shù)或pchip。計(jì)算成本比線性插值高但對于現(xiàn)代計(jì)算機(jī)和一般規(guī)模的數(shù)據(jù)差異可忽略不計(jì)。2.3 保形分段三次埃爾米特插值平衡的藝術(shù)‘pchip’Piecewise Cubic Hermite Interpolating Polynomial是介于線性和樣條之間的一個(gè)絕佳平衡。它也是分段三次多項(xiàng)式但其構(gòu)造目標(biāo)不是全局光滑而是形狀保持。為什么選它pchip的設(shè)計(jì)哲學(xué)是插值函數(shù)在數(shù)據(jù)點(diǎn)之間是單調(diào)的。換句話說如果原始數(shù)據(jù)是單調(diào)遞增的pchip插值結(jié)果也一定是單調(diào)遞增的如果原始數(shù)據(jù)存在局部極值點(diǎn)pchip也會在相同的點(diǎn)處產(chǎn)生極值。這完美避免了樣條的“過沖”問題。vq_pchip interp1(x, v, xq, pchip);適用場景當(dāng)你既需要比線性更光滑的曲線又極度關(guān)心插值結(jié)果不產(chǎn)生虛假振蕩、忠實(shí)反映數(shù)據(jù)原始趨勢時(shí)pchip是首選。例如插值金融產(chǎn)品的價(jià)格序列、某種物質(zhì)的濃度變化數(shù)據(jù)任何虛假的極值都可能誤導(dǎo)分析。在搜索熱詞“matlab 散點(diǎn)擬合橢圓方程”這類涉及幾何形狀擬合的場景中如果散點(diǎn)數(shù)據(jù)來自一個(gè)光滑閉合輪廓pchip也能很好地保持輪廓形狀。個(gè)人體會在我多年的工程數(shù)據(jù)處理中pchip已經(jīng)成為我默認(rèn)的“升級版線性插值”。除非有強(qiáng)理由需要二階導(dǎo)數(shù)連續(xù)如動(dòng)力學(xué)仿真否則pchip在光滑性和保形性之間的權(quán)衡幾乎總是最優(yōu)的。2.4 最近鄰與移動(dòng)平均特殊需求的簡單方案‘nearest’查詢點(diǎn)的值等于離它最近的已知數(shù)據(jù)點(diǎn)的值。結(jié)果是一個(gè)階梯函數(shù)。適用于分類數(shù)據(jù)插值或者當(dāng)你需要保持?jǐn)?shù)據(jù)離散性、避免產(chǎn)生任何中間值時(shí)例如在數(shù)字化地圖中查詢某個(gè)坐標(biāo)點(diǎn)的土地類型?!畃revious’/‘next’分別取前一個(gè)或后一個(gè)數(shù)據(jù)點(diǎn)的值。在時(shí)間序列分析中有時(shí)會用到例如用上一個(gè)有效值填充缺失值類似前向填充。這些方法雖然簡單但在特定場景下非常高效且邏輯清晰。3. 高維插值從網(wǎng)格到散點(diǎn)的升維挑戰(zhàn)現(xiàn)實(shí)世界的數(shù)據(jù)往往不止一個(gè)維度??赡苁嵌S圖像上的像素強(qiáng)度I(x, y)三維空間中的溫度場T(x, y, z)或者是隨時(shí)間變化的二維空間數(shù)據(jù)C(x, y, t)。Matlab 為此提供了interp2,interp3,interpn函數(shù)。3.1 網(wǎng)格數(shù)據(jù)插值當(dāng)數(shù)據(jù)整齊排列時(shí)如果您的數(shù)據(jù)點(diǎn)是在規(guī)則網(wǎng)格上定義的比如通過meshgrid或ndgrid生成那么高維插值非常直接可以看作是低維插值在各個(gè)維度上的推廣。% 創(chuàng)建一個(gè)二維高斯曲面樣本 [X, Y] meshgrid(-2:0.5:2, -2:0.5:2); Z peaks(X, Y); % peaks是Matlab內(nèi)置的示例函數(shù) % 創(chuàng)建更精細(xì)的查詢網(wǎng)格 [Xq, Yq] meshgrid(-2:0.1:2, -2:0.1:2); % 二維樣條插值 Zq interp2(X, Y, Z, Xq, Yq, spline); surf(Xq, Yq, Zq); hold on; plot3(X(:), Y(:), Z(:), ro, MarkerSize, 8, LineWidth, 2); % 標(biāo)出原始樣本點(diǎn) hold off;關(guān)鍵參數(shù)‘spline’與‘cubic’在interp2中‘spline’是雙三次樣條而‘cubic’指的是雙三次卷積插值后者計(jì)算更快但邊界處理略有不同。對于大多數(shù)圖像縮放應(yīng)用搜索熱詞“matlab圖像處理”‘cubic’是一個(gè)很好的平衡選擇?!甽inear’則是雙線性插值。一個(gè)易錯(cuò)點(diǎn)網(wǎng)格格式。interp2要求X, Y是meshgrid格式的矩陣。如果你手頭是向量x和y可以這樣調(diào)用interp2(x, y, Z, Xq, Yq, ...)Matlab 內(nèi)部會處理。但如果你自己構(gòu)造了Xq, Yq務(wù)必確保它們也是meshgrid格式否則結(jié)果會錯(cuò)亂。這與scatteredInterpolant對輸入格式的要求截然不同。3.2 散亂數(shù)據(jù)插值應(yīng)對“不規(guī)則”的現(xiàn)實(shí)更多時(shí)候我們的數(shù)據(jù)點(diǎn)是不規(guī)則分布的比如氣象站的位置、地質(zhì)采樣點(diǎn)、或者機(jī)器人在空間中的傳感器讀數(shù)。這時(shí)scatteredInterpolant類是你的瑞士軍刀。% 假設(shè)有一組散亂的二維空間測量點(diǎn) (x, y) 和測量值 v x rand(100, 1)*4 - 2; % 隨機(jī)x坐標(biāo) y rand(100, 1)*4 - 2; % 隨機(jī)y坐標(biāo) v sin(x.*2 y.*2) 0.1*randn(size(x)); % 測量值帶噪聲 % 創(chuàng)建插值對象 F scatteredInterpolant(x, y, v, natural); % 方法可選 natural, linear, nearest % 在規(guī)則網(wǎng)格上查詢 [Xq, Yq] meshgrid(linspace(-2, 2, 50)); Vq F(Xq, Yq); % 繪圖 scatter3(x, y, v, 40, v, filled); % 繪制原始散點(diǎn) hold on; surf(Xq, Yq, Vq, EdgeColor, none, FaceAlpha, 0.6); % 繪制插值曲面 hold off;方法選擇‘linear’在由散點(diǎn)構(gòu)成的三角網(wǎng)上進(jìn)行線性插值Delaunay三角剖分。這是默認(rèn)方法速度快能保證結(jié)果在數(shù)據(jù)極值之內(nèi)但曲面不光滑由多個(gè)三角平面構(gòu)成?!畁atural’自然鄰點(diǎn)插值。它根據(jù)查詢點(diǎn)周圍數(shù)據(jù)點(diǎn)的“自然”鄰域權(quán)重來計(jì)算值產(chǎn)生的曲面比線性插值光滑且能更好地適應(yīng)數(shù)據(jù)密度變化。這是我最常推薦的方法在保持合理光滑度的同時(shí)避免了樣條可能出現(xiàn)的嚴(yán)重振蕩?!畁earest’最近鄰插值。為什么使用類對象scatteredInterpolant的優(yōu)點(diǎn)是效率。當(dāng)你需要在同一個(gè)散點(diǎn)集上多次進(jìn)行插值查詢時(shí)例如在循環(huán)中或者對多個(gè)不同的值字段v1,v2, ... 進(jìn)行插值創(chuàng)建一次插值對象F然后只需更新F.Values并重新查詢即可無需重復(fù)進(jìn)行耗時(shí)的三角剖分計(jì)算。% 高效處理多個(gè)測量字段 F scatteredInterpolant(x, y, v1); % 創(chuàng)建對象完成三角剖分 result1 F(Xq, Yq); F.Values v2; % 僅更新值三角剖分(x,y)不變 result2 F(Xq, Yq);與克里金插值的關(guān)系搜索熱詞中提到了“克里金空間插值”??死锝鹗且环N更高級的地統(tǒng)計(jì)插值方法它不僅考慮距離還考慮數(shù)據(jù)的空間自相關(guān)性通過變差函數(shù)建模。Matlab的統(tǒng)計(jì)和機(jī)器學(xué)習(xí)工具箱提供了kriging相關(guān)函數(shù)。scatteredInterpolant的‘natural’方法在某些情況下可以看作是一種簡化的、無統(tǒng)計(jì)模型的克里金。對于嚴(yán)格的地質(zhì)、氣象空間分析可能需要專門研究克里金算法。4. 實(shí)戰(zhàn)場景與進(jìn)階技巧讓插值真正為你所用了解了基本工具我們來看看如何把它們應(yīng)用到具體問題中并避開那些隱藏的陷阱。4.1 場景一圖像縮放與處理圖像本質(zhì)上是一個(gè)二維矩陣I(m, n)每個(gè)元素代表一個(gè)像素點(diǎn)的強(qiáng)度。放大圖像就是增加更多的像素點(diǎn)這正是一個(gè)二維插值過程。img imread(cameraman.tif); % 讀取灰度圖像 scale_factor 2; [m, n] size(img); m_new round(m * scale_factor); n_new round(n * scale_factor); % 方法1使用 imresize (推薦封裝了多種方法) img_nearest imresize(img, [m_new, n_new], nearest); img_bilinear imresize(img, [m_new, n_new], bilinear); % 同 linear img_bicubic imresize(img, [m_new, n_new], bicubic); % 方法2手動(dòng)使用 interp2 (理解原理) [X, Y] meshgrid(1:n, 1:m); [Xq, Yq] meshgrid(linspace(1, n, n_new), linspace(1, m, m_new)); img_manual interp2(X, Y, double(img), Xq, Yq, cubic); img_manual uint8(img_manual); % 轉(zhuǎn)換回圖像數(shù)據(jù)類型選擇建議‘nearest’速度最快但會產(chǎn)生明顯的鋸齒像素塊。適用于像素藝術(shù)或需要保持硬邊緣的情況?!産ilinear’良好的平衡能有效消除鋸齒計(jì)算速度快。是許多應(yīng)用的默認(rèn)選擇?!産icubic’能產(chǎn)生更平滑的邊緣銳化效果更好是高質(zhì)量圖像放大的常用選擇但計(jì)算稍慢可能在邊緣產(chǎn)生輕微的過沖ringing。注意對于彩色圖像RGB需要對每個(gè)顏色通道R, G, B分別進(jìn)行插值。4.2 場景二處理缺失數(shù)據(jù)NaN這是開篇提到的經(jīng)典問題。Matlab 的插值函數(shù)通常無法直接處理包含NaN的數(shù)據(jù)。你需要先定位并剔除NaN對有效數(shù)據(jù)進(jìn)行插值然后再將值賦回原位置或新網(wǎng)格。% 假設(shè)有一維時(shí)間序列數(shù)據(jù)含有NaN t 1:100; y sin(0.1*t) 0.1*randn(size(t)); y(randi(100, 1, 10)) NaN; % 隨機(jī)插入10個(gè)NaN % 找出有效數(shù)據(jù)點(diǎn) valid_idx ~isnan(y); t_valid t(valid_idx); y_valid y(valid_idx); % 對有效數(shù)據(jù)點(diǎn)進(jìn)行插值插回到所有時(shí)間點(diǎn)包括NaN位置 y_filled interp1(t_valid, y_valid, t, pchip, extrap); % 使用pchip并允許適度外推填充邊緣 % 繪圖對比 plot(t, y, o, DisplayName, 原始數(shù)據(jù) (含NaN)); hold on; plot(t, y_filled, -, LineWidth, 1.5, DisplayName, 插值填充后); legend;更穩(wěn)健的策略對于時(shí)間序列結(jié)合移動(dòng)平均或?yàn)V波先進(jìn)行平滑再處理缺失值效果可能更好。也可以使用專門的信號處理工具箱函數(shù)如fillmissing。4.3 場景三非均勻采樣數(shù)據(jù)的重采樣你的數(shù)據(jù)可能是在非均勻的時(shí)間或空間間隔下采集的但后續(xù)分析如FFT頻譜分析要求數(shù)據(jù)是均勻采樣的。這時(shí)就需要通過插值進(jìn)行重采樣。% 非均勻采樣時(shí)間序列 t_irregular sort(rand(1, 50) * 10); % 不規(guī)則時(shí)間點(diǎn) y_irregular sin(t_irregular) 0.05*randn(size(t_irregular)); % 目標(biāo)重采樣到均勻時(shí)間網(wǎng)格 Fs_desired 10; % 目標(biāo)采樣率 10 Hz t_uniform 0:1/Fs_desired:max(t_irregular); y_uniform interp1(t_irregular, y_irregular, t_uniform, spline); % 使用樣條保證信號光滑 % 現(xiàn)在可以對 y_uniform 進(jìn)行頻譜分析了關(guān)鍵考量選擇插值方法時(shí)要考慮信號的特性。對于寬帶信號或含有高頻成分的信號樣條插值可能引入虛假的高頻成分。此時(shí)pchip或更保守的linear可能是更安全的選擇或者需要在插值前進(jìn)行抗混疊濾波。4.4 性能優(yōu)化與內(nèi)存管理當(dāng)處理大規(guī)模數(shù)據(jù)如高分辨率圖像、三維體數(shù)據(jù)、長時(shí)間序列時(shí)插值可能成為性能瓶頸。向量化查詢永遠(yuǎn)避免在循環(huán)中逐個(gè)點(diǎn)調(diào)用interp1。一次性傳入所有的查詢點(diǎn)xq向量或矩陣讓函數(shù)內(nèi)部進(jìn)行向量化計(jì)算。% 錯(cuò)誤做法極慢 for i 1:length(xq) yq(i) interp1(x, y, xq(i), linear); end % 正確做法極快 yq interp1(x, y, xq, linear);使用griddedInterpolant處理網(wǎng)格數(shù)據(jù)與scatteredInterpolant類似對于規(guī)則網(wǎng)格數(shù)據(jù)griddedInterpolant對象提供了更高的查詢效率特別是需要多次插值時(shí)。[X, Y, Z] peaks(25); % 示例網(wǎng)格數(shù)據(jù) F griddedInterpolant({1:size(Z,1), 1:size(Z,2)}, Z, cubic); % 創(chuàng)建對象 % 多次高效查詢 Vq1 F({1:0.5:size(Z,1), 1:0.5:size(Z,2)}); % ... 其他計(jì)算后 Vq2 F({linspace(1, size(Z,1), 100), linspace(1, size(Z,2), 100)});注意外插內(nèi)存如果設(shè)置了‘extrap’且查詢范圍遠(yuǎn)大于數(shù)據(jù)范圍結(jié)果中可能會包含大量基于不可靠外推得出的數(shù)值不僅無意義還可能占用大量內(nèi)存。5. 誤區(qū)、陷阱與最佳實(shí)踐總結(jié)即使掌握了所有函數(shù)在實(shí)際應(yīng)用中仍會踩坑。以下是一些血淚教訓(xùn)誤區(qū)一插值可以“創(chuàng)造”信息這是最根本的誤解。插值不能無中生有。它只是在已有信息的約束下對未知點(diǎn)做出合理的猜測。過度提高插值階數(shù)或使用過于靈活的方法如高次樣條試圖讓曲線穿過每一個(gè)數(shù)據(jù)點(diǎn)往往會擬合噪聲導(dǎo)致“過擬合”結(jié)果在數(shù)據(jù)點(diǎn)之間劇烈振蕩失去物理意義。更復(fù)雜的方法不等于更好的結(jié)果。陷阱二忽視數(shù)據(jù)的物理意義和統(tǒng)計(jì)特性在插值前務(wù)必問自己數(shù)據(jù)代表什么它應(yīng)該是光滑的嗎如溫度場通常是光滑的而股票價(jià)格則不是。它是否有邊界約束如濃度不能為負(fù)。數(shù)據(jù)是否存在各向異性在空間插值中東西方向和南北方向的變化規(guī)律可能不同。盲目套用方法會導(dǎo)致物理上不可信的結(jié)果。例如對高度相關(guān)的空間數(shù)據(jù)使用簡單的最近鄰插值會完全破壞其空間連續(xù)性。陷阱三混淆插值與擬合插值要求曲線必須穿過每一個(gè)已知數(shù)據(jù)點(diǎn)。擬合如多項(xiàng)式擬合、最小二乘法則是尋找一個(gè)整體上最接近所有數(shù)據(jù)點(diǎn)的函數(shù)不要求穿過每一個(gè)點(diǎn)。如果你的數(shù)據(jù)含有顯著的測量誤差或噪聲擬合通常是更合適的選擇因?yàn)樗梢云交粼肼?。用插值去處理帶噪聲的?shù)據(jù)會把噪聲也一并“忠實(shí)”地重現(xiàn)出來。最佳實(shí)踐清單可視化先行在插值前后始終繪制原始數(shù)據(jù)點(diǎn)和插值結(jié)果的圖形。肉眼是發(fā)現(xiàn)異常如過沖、非單調(diào)性最快速的工具。從簡單開始默認(rèn)嘗試‘linear’或‘pchip’。只有當(dāng)你確信數(shù)據(jù)背后是高度光滑的過程且需要光滑的導(dǎo)數(shù)時(shí)才考慮‘spline’。敏感性分析如果可能嘗試用不同的插值方法處理同一組數(shù)據(jù)比較結(jié)果的差異。如果差異巨大說明你的結(jié)論對插值方法選擇很敏感需要更謹(jǐn)慎地論證方法選擇的合理性。文檔化你的選擇在代碼注釋或報(bào)告中標(biāo)明你使用了何種插值方法及其參數(shù)。這有助于結(jié)果的復(fù)現(xiàn)和審閱。理解外推的危險(xiǎn)時(shí)刻對插值范圍外的結(jié)果保持警惕。在報(bào)告中明確區(qū)分哪些是插值結(jié)果哪些是外推結(jié)果?;氐阶畛跄莻€(gè)傳感器數(shù)據(jù)“補(bǔ)洞”的問題我最終沒有使用默認(rèn)的線性插值而是根據(jù)溫度變化的物理特性連續(xù)、光滑選擇了pchip。它既提供了比線性更合理的平滑過渡又避免了樣條在數(shù)據(jù)缺口邊緣可能產(chǎn)生的微小振蕩。這個(gè)選擇基于對數(shù)據(jù)本身的理解而不僅僅是軟件的功能列表。這才是使用Matlab插值算法乃至任何強(qiáng)大工具的核心——讓工具服務(wù)于你對問題的洞察而非相反。