【MATLAB第24期】源码分享| 基于MATLAB的五种插值方法合集(线性、三次、三次样条、最邻近、分段三次Hermite),解决多变量样本空值插值,以及零值插值

简介: 【MATLAB第24期】源码分享| 基于MATLAB的五种插值方法合集(线性、三次、三次样条、最邻近、分段三次Hermite),解决多变量样本空值插值,以及零值插值

MATLAB第24期】源码分享| 基于MATLAB的五种插值方法合集(线性、三次、三次样条、最邻近、分段三次Hermite),解决多变量样本空值插值,以及零值插值


免费提供试用版代码,可自行运行计算结果。


1.数据要求


(1)数据均为数值格式。

(2)每行为不同变量的值。

(2)首尾数据得有值,不能空缺。


2.插值方法


(1)线性插值

(2)三次插值

(3)三次样条插值

(4)最邻近插值

(5)分段三次Hermite插值


3.插值思路


(1)提取非零或者非空对应的数据进行插值

(2)找到对应非零或者非空的行以及列

(3)使用五种方法,用for循环分别对提取后的残缺合集进行插值

(4)对插值结果赋值为datanew1~5

(5)将插值的结果替换原来的非零或者非空数据

(6)判断插值结果是否为负


4.插值数据


(1)空值插值

(2)零值插值



5.插值结果


插值结果不一一举例,选取线性插值结果进行展示。

(1)空值插值

(2)零值插值


6.主程序代码展示(部分)


(1)空值插值


clc,clear;
data=xlsread('randNaNExample.xlsx','Sheet1'); %提取数据分析1数据
data1=data(:,1:end);% 
[M,p1,p2,p3,p4,p5] = mynan(data);
finaldata1=data1;%  线性插值结果
finaldata2=data1;%   三次插值结果
finaldata3=data1;%   三次样条插值法结果
finaldata4=data1;% 最邻近插值法结果
finaldata5=data1;%   分段三次Hermite插值预测结果
%判断p有没有负数 
for i=1:size(M,1)
cc1{i,1}=find(p1{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc2{i,1}=find(p2{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc3{i,1}=find(p3{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc4{i,1}=find(p4{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc5{i,1}=find(p5{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
datanew1=cell2mat(p1);%  还原p矩阵 线性插值
datanew2=cell2mat(p2);%  还原p矩阵 三次插值
datanew3=cell2mat(p3);%  还原p矩阵 三次样条插值法
datanew4=cell2mat(p4);%  还原p矩阵 最邻近插值法
datanew5=cell2mat(p5);%  还原p矩阵 分段三次Hermite插值预测
finaldata1(M,:)=datanew1;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata2(M,:)=datanew2;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata3(M,:)=datanew3;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata4(M,:)=datanew4;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata5(M,:)=datanew5;% data原来的数据 有空值的样本都替换成新插值的样本

(2)零值插值

clc,clear;
data=xlsread('rand0Example.xlsx','Sheet1'); %提取数据分析1数据
data1=data(:,1:end);% 
[M,p1,p2,p3,p4,p5] = myzero(data);
finaldata1=data1;%  线性插值结果
finaldata2=data1;%   三次插值结果
finaldata3=data1;%   三次样条插值法结果
finaldata4=data1;% 最邻近插值法结果
finaldata5=data1;%   分段三次Hermite插值预测结果
%判断p有没有负数 
for i=1:size(M,1)
cc1{i,1}=find(p1{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc2{i,1}=find(p2{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc3{i,1}=find(p3{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc4{i,1}=find(p4{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
for i=1:size(M,1)
cc5{i,1}=find(p5{i,1}<0);  %cc 变量里 如果有值,说明存在负数
end
datanew1=cell2mat(p1);%  还原p矩阵 线性插值
datanew2=cell2mat(p2);%  还原p矩阵 三次插值
datanew3=cell2mat(p3);%  还原p矩阵 三次样条插值法
datanew4=cell2mat(p4);%  还原p矩阵 最邻近插值法
datanew5=cell2mat(p5);%  还原p矩阵 分段三次Hermite插值预测
finaldata1(M,:)=datanew1;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata2(M,:)=datanew2;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata3(M,:)=datanew3;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata4(M,:)=datanew4;% data原来的数据 有空值的样本都替换成新插值的样本
finaldata5(M,:)=datanew5;% data原来的数据 有空值的样本都替换成新插值的样本


7.代码获取


试用版代码以及案例数据将基本免费提供。

后台私聊“第24期试用版”获取试用版下载链接

后台私聊“第24期完整版”获取完整版下载链接


相关文章
|
17天前
|
传感器 机器学习/深度学习 数据采集
【数据驱动】【航空航天结构的高效损伤检测技术】一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应(Matlab代码实现)
【数据驱动】【航空航天结构的高效损伤检测技术】一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应(Matlab代码实现)
|
17天前
|
机器学习/深度学习 监控 算法
分布式光伏储能系统的优化配置方法(Matlab代码实现)
分布式光伏储能系统的优化配置方法(Matlab代码实现)
|
21天前
|
边缘计算 资源调度 监控
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
|
11天前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
|
11天前
|
数据采集 算法 数据挖掘
【场景削减】基于DBSCAN密度聚类风电-负荷确定性场景缩减方法(Matlab代码实现)
【场景削减】基于DBSCAN密度聚类风电-负荷确定性场景缩减方法(Matlab代码实现)
|
11天前
|
算法 安全
【含储能及sop的多时段配网优化模型】基于柔性开断点(Soft Open Point)的主动配电网电压与无功功率协调控制方法研究(Matlab代码实现)
【含储能及sop的多时段配网优化模型】基于柔性开断点(Soft Open Point)的主动配电网电压与无功功率协调控制方法研究(Matlab代码实现)
|
10天前
|
数据采集 新能源 调度
【Copula】基于二元Frank-Copula函数的风光出力场景生成方法【考虑风光出力的不确定性和相关性】(Matlab代码实现)
【Copula】基于二元Frank-Copula函数的风光出力场景生成方法【考虑风光出力的不确定性和相关性】(Matlab代码实现)
|
11天前
|
传感器 机器学习/深度学习 算法
【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)
【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)
|
11天前
|
存储 运维 安全
计及调度经济性的光热电站储热容量配置方法【IEEE30节点】(Matlab代码实现)
计及调度经济性的光热电站储热容量配置方法【IEEE30节点】(Matlab代码实现)
|
11天前
|
机器学习/深度学习 边缘计算 自动驾驶
【状态估计】非线性受控动力系统的线性预测器——Koopman模型预测MPC(Matlab代码实现)
【状态估计】非线性受控动力系统的线性预测器——Koopman模型预测MPC(Matlab代码实现)

热门文章

最新文章