MATLAB里面interp1和interpft函数用法和示例,全网最详细!
今天刚弄懂MATLAB里面interp1和interpft函数用法,特意做点笔记
学完不做笔记,等于没学!大家点个免费的赞呗,鼓励一下创作,不然都没人写总结笔记了,没人给代码了。
interp1
interp1比较简单好用,可以选择线性插值或者三次样条插值
一维数据插值(表查找)
参考博文
interpft
一维插值(FFT 方法)
先对样点序列进行傅立叶变换,在得到的频域序列中扩充采样点(补零),然后再反傅立叶变换,得到插值了的序列
以傅里叶变换的结果去进行插值,可能更吻合其频谱
代码:
clear;clc;close all;
y=[0 .5 1 1.5 2 1.5 1 0.5 0 -.5 -1 -1.5 -2 -1.5 -1 -.5 0];
N=length(y);
L=5;
n=N*L;
x=0:L:L*N-1;
xi=0:n-1;
yi=interpft(y,n);
figure
plot(x,y,'o',xi,yi,'+')
grid on
y2 = interp1(x,y,xi,'spline');
figure
plot(x,y,'o',xi,y2,'*')
grid on
%% 范例2
dx = 3*pi/30;
x = 0:dx:3*pi;
f = sin(x).^2 .* cos(x);
figure
plot(x,f,'o')
grid on
N = 200;
y = interpft(f,N);
dy = dx*length(x)/N;
x2 = 0:dy:3*pi;
y = y(1:length(x2));
hold on
plot(x2,y,'.')
title('FFT Interpolation of Periodic Function')
% ---- 对比----
y3 = interp1(x,f,x2,'spline');
hold on.
plot(x2,y3,'g.')
grid on