【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期完整版”获取完整版下载链接


相关文章
|
4月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
6月前
|
算法 Python
MATLAB运用——多项式插值
MATLAB运用——多项式插值
123 0
|
8月前
|
机器学习/深度学习 传感器 算法
基于同步压缩的多变量数据时频分析附 matlab代码
基于同步压缩的多变量数据时频分析附 matlab代码
|
4月前
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
|
8月前
|
机器学习/深度学习 传感器 算法
【特征提取】语音信号端点检测+倒谱法+自相关法特征提取附Matlab源码
【特征提取】语音信号端点检测+倒谱法+自相关法特征提取附Matlab源码
|
9天前
|
算法
MATLAB最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
MATLAB最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
19 0
|
25天前
|
存储 人工智能 机器人
【Matlab】Matlab 汉/英语(A/a)声学特征比较与基音频率分析(源码+音频文件)【独一无二】
【Matlab】Matlab 汉/英语(A/a)声学特征比较与基音频率分析(源码+音频文件)【独一无二】
|
2月前
|
编解码 算法 计算机视觉
基于FPGA的图像最近邻插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像最近邻插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
|
2月前
|
索引
matlab快速入门(读取数据并绘制散点图和拉格朗日插值
matlab快速入门(读取数据并绘制散点图和拉格朗日插值
32 0
|
3月前
|
算法
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
MATLAB | 插值算法 | 一维interpl插值法 | 附数据和出图代码 | 直接上手
45 0

热门文章

最新文章