MATLAB插值函数interp1

MATLAB插值函数interp1

vq = interp1(x,v,xq) 使用线性插值返回一维函数在特定查询点的插入值。向量 x 包含样本点,v 包含对应值 v(x)。向量 xq 包含查询点的坐标。

其实意思就是说,x是已知的横坐标,v是x对应的函数值,xq是要查询的横坐标,现在要求要查询的横坐标的函数值

在这里插入图片描述


代码1:

%{
    MATLAB中的插值函数为interp1,其调用格式为:  yi= interp1(x,y,xi,'method')           
    其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 
    'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 
        'nearest'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'pchip'立方插值.缺省时表示线性插值
    注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
%}
x = 0:2*pi;  
y = sin(x);  
xx = 0:0.5:2*pi;  

% interp1对sin函数进行分段线性插值,调用interp1的时候,默认的是分段线性插值  
y1 = interp1(x,y,xx,'linear');  
subplot(2,2,1);
plot(x,y,'o',xx,y1,'r')  
title('分段线性插值')  
  
% 临近插值  
y2 = interp1(x,y,xx,'nearest');  
subplot(2,2,2);
plot(x,y,'o',xx,y2,'r');  
title('临近插值')  
  
%球面线性插值  
y3 = interp1(x,y,xx,'spline');  
subplot(2,2,3);
plot(x,y,'o',xx,y3,'r')  
title('球面插值')  
  
%三次多项式插值法  
y4 = interp1(x,y,xx,'pchip');  
subplot(2,2,4);
plot(x,y,'o',xx,y4,'r');  
title('三次多项式插值')

直观代码2:

%{
    例如:在一 天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为
            129910182428272520181513,
    推测中午12点(即13点)时的温度.
%}
x = 0:2:24;
y = [12   9   9   10   18  24   28   27   25   20  18  15  13];
a = 13;
y1 = interp1(x,y,a,'spline')
% 结果为:  27.8725

% 若要得到一天24小时的温度曲线,则:
xi = 0:1/3600:24;
% 插值点可以是向量,则返回的也就是对应的向量
yi = interp1(x,y,xi, 'spline');
plot(x,y,'o' ,xi,yi);

参考链接

### MATLAB 中 `interp1` 插值函数的使用 #### 函数概述 `interp1` 是 MATLAB 提供的一维数据插值函数,支持多种插值方法。该函数可以根据已知的数据点,在指定位置计算新的插值点。 #### 基本语法 基本调用格式如下: ```matlab vq = interp1(x,v,xq) ``` 其中: - `x`: 已知样本点的位置向量。 - `v`: 对应于 `x` 的样本值向量。 - `xq`: 查询点的位置向量。 - `vq`: 返回查询点处对应的插值结果[^1]。 #### 支持的方法 可以通过设置 `'Method'` 参数来选择不同的插值算法,默认采用线性插值法 (`linear`)。其他常用选项包括最近邻(`nearest`)、样条曲线(`spline`)以及三次多项式(`pchip`)等。 #### 示例代码 下面给出一个简单的例子展示如何利用 `interp1` 进行一维拉格朗日插值操作: ```matlab % 定义原始离散采样点及其对应数值 x = 0:pi/4:2*pi; y = sin(x); % 设定更细密的目标间隔用于显示平滑后的图形 xi = linspace(min(x), max(x)); % 应用 interp1 执行不同类型的插值运算 yi_linear = interp1(x, y, xi); yi_spline = interp1(x, y, xi,'spline'); yi_pchip = interp1(x, y, xi,'pchip'); % 绘制对比图 figure(); plot(x,y,'o',xi,yi_linear,'-',xi,yi_spline,'-.',xi,yi_pchip,'--') legend('Original Data','Linear Interpolation',... 'Spline Interpolation','PCHIP Interpolation') title('Comparison of Different Types of One-Dimensional Interpolations') xlabel('X Axis'); ylabel('Y Axis') grid on; ``` 此段程序展示了四种方式下的正弦波形近似效果:原数据点标记为圆圈;直线连接代表最基础的线性逼近方案;虚实相间的折线则分别体现了基于自然三次样条与分片立方Hermite插值的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值