19.matlab数据分析插值(matlab程序)

1. 简述

数据插值的计算机制

数据插值是一种函数逼近的方法。

一维插值

Y1=interp1(X,Y,X1,method)

二维插值

interp2():二维插值函数。

调用格式:

Z1=interp2(X,Y,Z,X1,Y1,method)

其中,X、Y是两个向量,表示两个参数的采样点, Z是采样点对应的函数值。X1、 Y1是两个标量或向量,表示要插值的点。

数据插值的实现方法

method用于指定插值方法,常用的取值有以下四种:

linear: 线性插值,默认方法。将与插值点靠近的两个数据点用直线 连接,然后在直线上选取对应插值点的数据。

nearest :最近点插值。选择最近样本点的值作为插值数据。

pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一-阶导数相等,使得曲线光滑的同时,还具有保形性。

spline: 3次样条插值。每个分段内构造一个三次多项式, 使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。

2. 代码

%% 学习目标:插值

%% 一维多项式插值

clc;

clear all;

x=0:0.2:2;

y=(x.^2-3*x+5).*exp(-3*x).*sin(x);

xi=0:0.03:2; %要插值的数据

yi_nearest=interp1(x,y,xi,'nearest'); %临近点插值

yi_linear=interp1(x,y,xi); %默认为线性插值

yi_spine=interp1(x,y,xi,'spine'); %三次样条插值

yi_pchip=interp1(x,y,xi,'pchip'); %分段三次Hermite插值

yi_v5cubic=interp1(x,y,xi,'v5cubic'); %MATLAB5中三次多项式插值

figure; %画图显示

hold on;

subplot(231);

plot(x,y,'ro');

title('已知数据点');

subplot(232);

plot(x,y,'ro',xi,yi_nearest,'b-');

title('临近点插值');

subplot(233);

plot(x,y,'ro',xi,yi_linear,'b-');

title('线性插值');

subplot(234);

plot(x,y,'ro',xi,yi_spine,'b-');

title('三次样条插值');

subplot(235);

plot(x,y,'ro',xi,yi_pchip,'b-');

title('分段三次Hermite插值');

subplot(236);

plot(x,y,'ro',xi,yi_v5cubic,'b-');

title('MATLAB5中三次多项式插值');

%% 采用一维快速傅立叶插值

clc;

clear all;

x=0:1.1:8;

y=sin(x);

n=2*length(x); %增采样1倍

yi=interpft(y,n);%采用一维快速傅立叶插值

xi=0:0.55:8.3;%要插值的数据

figure;%画图显示

hold on;

plot(x,y,'ro',xi,yi,'b-');

legend('原始数据','插值后结果');

%% 三次样条插值

clc;

clear all;

x=0:10;%原始数据

y=sin(x);

xi=0:.25:10;%插值数据

yi=spline(x,y,xi);%三次样条插值

pp=spline(x,y);%产生插值函数

y1=ppval(pp,xi); %结果相同y1=yi

y2=interp1(x,y,xi,'spline'); %结果相同y2=yi

figure;%画图显示

plot(x,y,'o',xi,yi);

legend('原始数据','三次样条插值');

3. 运行结果

相关推荐
人工智能训练4 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
源于花海5 小时前
迁移学习相关的期刊和会议
人工智能·机器学习·迁移学习·期刊会议
兩尛5 小时前
c++知识点2
开发语言·c++
fengfuyao9855 小时前
海浪PM谱及波形的Matlab仿真实现
开发语言·matlab
xiaoye-duck5 小时前
C++ string 底层原理深度解析 + 模拟实现(下)——面试 / 开发都适用
开发语言·c++·stl
微露清风6 小时前
系统性学习Linux-第二讲-基础开发工具
linux·运维·学习
阳光九叶草LXGZXJ6 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
Hx_Ma166 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
DisonTangor6 小时前
DeepSeek-OCR 2: 视觉因果流
人工智能·开源·aigc·ocr·deepseek
薛定谔的猫19826 小时前
二十一、基于 Hugging Face Transformers 实现中文情感分析情感分析
人工智能·自然语言处理·大模型 训练 调优