matlab_interp1


今天通過幾個實例對matlab中的interp1插值函數進行了深入的理解,下面通過幾組數據進行說明。
插值法:插值法又稱“內插法”,是利用函數f (x)在某區間中已知的若干點的函數值,作出適當的特定函數,在區間的其他點上用這特定函數的值作為函數f (x)的近似值,這種方法稱為插值法。如果這特定函數是多項式,就稱它為插值多項式。
雖然插值法的定義是這么說的,在通過matlab處理數據時發現,其實插值的還有一個目的,為了處理數據而進行插值,換句話說就是為了能夠處理數據或者更好的處理數據,也可能是為了更好的分析數據。
 
應用 interp1 插值函數進行插值(原諒以前的認知,覺得插值肯定是插進去了,最后的值肯定變多了,事實表明不是這樣的)。這是 interp1函數的用法。
1 vq = interp1(x,v,xq) 2 vq = interp1(x,v,xq,method) 3 vq = interp1(x,v,xq,method,extrapolation) 4 vq = interp1(v,xq) 5 vq = interp1(v,xq,method) 6 vq = interp1(v,xq,method,extrapolation) 7 pp = interp1(x,v,method,'pp')

今天要記錄的是通過插值使得仿真數據符合實驗數據的要求

可以看出PP是 1×4096 ,但是需要得到的是1×720,這時候通過interp1進行插值就可以實現這樣的功能。代碼如下

 1 Pbegin=58;       %%%%%%%%%%%% 測量開始點,縮比模型中58mm  2 ddxx=2; %%%%%%%%%%%% 測量點間隔,縮比模型中2mm  3 Pn=720;  4 Pwz=Pbegin:ddxx:(Pbegin+ddxx*(Pn-1));  5 PP=abs(PP);  6 PPP=interp1(r,PP,Pwz); %%%直接插值  7 PPP3=conj(PPP); %%%%%%%%%conj計算復數x的共軛值  8 PP1=abs(PP);  9 PPP1=interp1(r,PP1,Pwz); 10 PPP1=-20*log10(PPP1); 11 save('PPP3.mat','PPP3') 

從第一行代碼到第4行代碼,它的主要工作是構建以58為起點,間隔為2,最后形成Pwz矩陣,一共720個點的數據(或者說坐標)。初始數據PP為1×4096的一個矩陣,通過interpl函數使得PP形成了一個按照Pwz格式的一組新的矩陣PPP3(1×720)。最后通過插值的方式使得仿真的數據符合實驗數據的格式(形式),以便於進行下一步的處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM