MATLAB中fillmissing函数用法

目录

语法

说明

示例

包含 NaN 值的向量

由 NaN 值组成的矩阵

插入缺失数据

使用移动中位数方法

使用自定义填充方法

包含缺失端点的矩阵

包含多个数据类型的表


        fillmissing函数的功能是填充缺失的条目。

语法

F = fillmissing(A,'constant',v)
F = fillmissing(A,method)
F = fillmissing(A,movmethod,window)
F = fillmissing(A,'knn')
F = fillmissing(A,'knn',k)
F = fillmissing(A,fillfun,gapwindow)
F = fillmissing(___,dim)
F = fillmissing(___,Name,Value)
[F,TF] = fillmissing(___)

说明

        ​F = fillmissing(A,'constant',v) 使用常量值 v 填充缺失的数组或表条目。如果 A 是矩阵或多维数组,则 v 可以是标量或向量。如果 v 是向量,则每个元素指定 A 的对应列中的填充值。如果 A 是表或时间表,则 v 也可以是元胞数组,其元素包含每个表变量的填充值。

缺失值的定义取决于 A 的数据类型:

  • NaN - double、single、duration 和 calendarDuration

  • NaT — datetime

  • <missing> — string

  • <undefined> — categorical

  • {''} - 字符向量的 cell

如果 A 是表,则每个变量的数据类型定义该变量的缺失值。

        ​F = fillmissing(A,method) 使用 method 指定的方法填充缺失的条目。例如,fillmissing(A,'previous') 对 A 中的缺失条目使用上一个非缺失条目进行填充。

        ​F = fillmissing(A,movmethod,window) 使用窗长度为 window 的移动窗均值或中位数填充缺失条目。例如,fillmissing(A,'movmean',5) 使用窗长度为 5 的移动均值填充缺失数据。

        F = fillmissing(A,'knn') 用最近邻行中的对应值填充缺失条目,这些值是根据行之间的成对欧几里德距离计算的。

        F = fillmissing(A,'knn',k) 用 k 最近邻行中对应值的均值填充缺失条目,该均值是根据行之间的成对欧几里德距离计算的。例如,fillmissing(A,'knn',5) 用五个最近邻行中对应值的均值填充 A 中的缺失条目。

        F = fillmissing(A,fillfun,gapwindow) 使用由函数句柄 fillfun 指定的自定义方法填充缺失条目的空缺,并在每个空缺周围设置固定窗,从该窗计算填充值。fillfun 必须具有输入参数 xs、ts 和 tq,它们是向量,分别包含长度为 gapwindow 的采样数据 xs、长度为 gapwindow 的采样数据位置 ts 和缺失数据位置 tq。ts 和 tq 中的位置是采样点向量的子集。

        F = fillmissing(___,dim) 支持上述语法中的任何输入参数组合,且可指定 A 中要进行运算的维度。默认情况下,fillmissing 沿其大小不为 1 的第一个维度进行运算。例如,如果 A 是矩阵,则 fillmissing(A,2) 跨 A 的各列进行运算,逐行填充缺失的数据。

        F = fillmissing(___,Name,Value) 使用一个或多个名称-值参数指定用于填充缺失值的其他参数。例如,如果 t 是时间值向量,则 fillmissing(A,'linear','SamplePoints',t) 会基于 t 中的时间值对 A 中的数据进行插值。

        ​[F,TF] = fillmissing(___) 还返回逻辑数组 TF,该数组指示 F 中先前缺失现已填充的条目的位置。

示例

包含 NaN 值的向量

        创建包含 NaN 值的向量,并使用前一个非缺失值替换每个 NaN。

A = [1 3 NaN 4 NaN NaN 5];
F = fillmissing(A,'previous')F = 1×71     3     3     4     4     4     5

由 NaN 值组成的矩阵

        创建一个 2×2 矩阵,每列有一个 NaN 值。在第一列中用 100 填充 NaN,在第二列中用 1000 填充。

A = [1 NaN; NaN 2]
A = 2×21   NaNNaN     2F = fillmissing(A,'constant',[100 1000])
F = 2×21        1000100           2

插入缺失数据

        使用插值来替换非均匀采样的数据中的 NaN 值。定义非均匀采样点向量,并计算这些点上的正弦函数。

x = [-4*pi:0.1:0, 0.1:0.2:4*pi];
A = sin(x);

将 NaN 值插入 A 中。

A(A < 0.75 & A > 0.5) = NaN;

        使用线性插值填充缺失数据,并返回填充的向量 F 和逻辑向量 TF。TF 项中的值 1 (true) 对应于 F 中的填充值。

[F,TF] = fillmissing(A,'linear','SamplePoints',x);

绘制原始数据和填充的数据。

scatter(x,A)
hold on
scatter(x(TF),F(TF))
legend('Original Data','Filled Data')

如图所示:

使用移动中位数方法

        使用移动中位数填充缺失的数值数据。创建样本点向量 x 和包含缺失值的数据向量 A。

x = linspace(0,10,200); 
A = sin(x) + 0.5*(rand(size(x))-0.5); 
A([1:10 randi([1 length(x)],1,50)]) = NaN; 

        使用窗长度为 10 的移动中位数替换 A 中的 NaN 值,并绘制原始数据和填充的数据。

F = fillmissing(A,'movmedian',10);  
plot(x,F,'.-') 
hold on
plot(x,A,'.-')
legend('Original Data','Filled Data')

如图所示:

使用自定义填充方法

        定义一个自定义函数,用上一个非缺失值填充 NaN 值。定义采样点向量 t 和包含 NaN 值的对应数据向量 A。绘制数据图。

t = 10:10:100;
A = [0.1 0.2 0.3 NaN NaN 0.6 0.7 NaN 0.9 1];
scatter(t,A)

如图所示:

        使用局部函数 forwardfill(在示例末尾定义)用上一个非缺失值填充缺失空缺。函数句柄输入包括:

  • xs - 用于填充的数据值

  • ts - 用于填充的值相对于采样点的位置

  • tq - 缺失值相对于采样点的位置

  • n - 要填充的空缺中的值的数目

n = 2;
gapwindow = [10 0];[F,TF] = fillmissing(A,@(xs,ts,tq) forwardfill(xs,ts,tq,n),gapwindow,'SamplePoints',t);

        空缺窗值 [10 0] 指示 fillmissing 考虑缺失值空缺之前的一个数据点,不考虑空缺之后的任何数据点,因为上一个非缺失值位于空缺之前 10 个单位。对于第一个空缺,由 fillmissing 确定的函数句柄输入值为:

  • xs = 0.3

  • ts = 30

  • tq = [40 50]

第二个空缺的函数句柄输入值为:

  • xs = 0.7

  • ts = 70

  • tq = 80

绘制原始数据和填充的数据。

scatter(t,A)
hold on
scatter(t(TF),F(TF))

如图所示:

function y = forwardfill(xs,ts,tq,n)
% Fill n values in the missing gap using the previous nonmissing value
y = NaN(1,numel(tq));
y(1:min(numel(tq),n)) = xs;
end

包含缺失端点的矩阵

        创建包含缺失条目的矩阵并使用线性插值填充各列(第二个维度),一次一行。对于每行,使用该行中距离最近的非缺失值填充前导和尾随缺失值。

A = [NaN NaN 5 3 NaN 5 7 NaN 9 NaN;8 9 NaN 1 4 5 NaN 5 NaN 5;NaN 4 9 8 7 2 4 1 1 NaN]
A = 3×10NaN   NaN     5     3   NaN     5     7   NaN     9   NaN8     9   NaN     1     4     5   NaN     5   NaN     5NaN     4     9     8     7     2     4     1     1   NaNF = fillmissing(A,'linear',2,'EndValues','nearest')
F = 3×105     5     5     3     4     5     7     8     9     98     9     5     1     4     5     5     5     5     54     4     9     8     7     2     4     1     1     1

包含多个数据类型的表

        使用不同数据类型填充表变量的缺失值。创建表,其变量包括 categorical、double 和 char 数据类型。

A = table(categorical({'Sunny'; 'Cloudy'; ''}),[66; NaN; 54],{''; 'N'; 'Y'},[37; 39; NaN],...'VariableNames',{'Description' 'Temperature' 'Rain' 'Humidity'})A=3×4 tableDescription    Temperature       Rain       Humidity___________    ___________    __________    ________Sunny               66        {0x0 char}       37   Cloudy             NaN        {'N'     }       39   <undefined>         54        {'Y'     }      NaN   

        用上一个条目的值替换所有缺失的条目。由于 Rain 变量中不存在前一个元素,缺失的字符向量将不会被替换。

F = fillmissing(A,'previous')
F=3×4 tableDescription    Temperature       Rain       Humidity___________    ___________    __________    ________Sunny            66         {0x0 char}       37   Cloudy           66         {'N'     }       39   Cloudy           54         {'Y'     }       39   

        将 A 中 Temperature 和 Humidity 变量的 NaN 值替换为 0。

F = fillmissing(A,'constant',0,'DataVariables',{'Temperature','Humidity'})
F=3×4 tableDescription    Temperature       Rain       Humidity___________    ___________    __________    ________Sunny              66         {0x0 char}       37   Cloudy              0         {'N'     }       39   <undefined>        54         {'Y'     }        0   

参数说明:

A-输入数据,指定为向量、矩阵、多维数组、字符向量元胞数组、表或时间表。

  • 如果 A 为时间表,则仅填充表值。如果关联的行时间向量包含 NaT 或 NaN 值,则 fillmissing 会产生错误。行时间必须是唯一的并按升序列出。

  • 如果 A 是元胞数组或包含元胞数组变量的表,则 fillmissing 仅在元胞数组包含字符向量时填充缺失元素。

v-填充常量,指定为标量、向量或元胞数组。

  • 如果 A 是矩阵或多维数组,则 v 可以是向量,表示每个运算维度的一个不同填充值。v 的长度必须与运算维度的长度相匹配。

  • 如果 A 是表或时间表,则 v 可以是填充值的元胞数组,表示每个变量的一个不同填充值。元胞数组中的元素数必须与表中的变量数目相匹配。

method-填充方法,指定为下列值之一:

方法描述
'previous'上一个非缺失值
'next'下一个非缺失值
'nearest'距离最近的非缺失值
'linear'相邻非缺失值的线性插值(仅限数值、duration 和 datetime 数据类型)
'spline'分段三次样条插值(仅限数值、duration 和 datetime 数据类型)
'pchip'保形分段三次样条插值(仅限数值、duration 和 datetime 数据类型)
'makima'修正 Akima 三次 Hermite 插值(仅限数值、duration 和 datetime 数据类型)

movmethod — 移窗法

填充缺失数据的移动方法,指定为下列值之一:

方法描述
'movmean'窗长度为 window 的移动均值(仅限数值数据类型)
'movmedian'窗长度为 window 的移动中位数(仅限数值数据类型)

window — 窗长度
        移动方法的窗长度,指定为正整数标量、由正整数组成的二元素向量、正持续时间标量或由正持续时间组成的二元素向量。窗是相对于采样点定义的。

        如果 window 是正整数标量,则窗以当前元素为中心并且包含 window-1 个相邻元素。如果 window 是偶数,则窗口以当前元素和上一个元素为中心。

        如果 window 是由正整数组成的二元素向量 [b f],则窗口包含当前元素、其之前的 b 个元素和之后的 f 个元素。

        如果 A 是时间表或 SamplePoints 指定为 datetime 或 duration 向量,则窗口必须为 duration 类型。

k — 最近邻的数量,用 'knn' 方法计算平均值的最近邻的数量,指定为正整数标量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/123772.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——线程详解(一)

索引 初识线程1.inux下的线程2.再谈进程3.理解页表4. 再次理解虚拟到物理的转化 线程的控制1.线程的创建2.线程异常3.验证pthread_join 的第二个参数4.线程的退出方式5. 线程的公有和私有6.pthread_t 与线程独立栈7.线程的局部性存储8.线程分离 初识线程 1.inux下的线程 之前了…

【数据结构】单链表详解

当我们学完顺序表的时候&#xff0c;我们发现了好多问题如下&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度为O(N)增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当…

光栅和矢量图像处理:Graphics Mill 11.4.1 Crack

Graphics Mill 是适用于 .NET 和 ASP.NET 开发人员的最强大的成像工具集。它允许用户轻松向 .NET 应用程序添加复杂的光栅和矢量图像处理功能。 光栅图形 加载和保存 JPEG、PNG 和另外 8 种图像格式 调整大小、裁剪、自动修复、色度键和 30 多种其他图像操作 可处理任何尺寸&am…

AJAX学习笔记1发送Get请求

传统请求有哪些方式,及缺点 传统请求有哪些? 1.直接在浏览器地址栏上输入URL. 2.点击超连接. <a href"/上下文/请求地址">超链接请求</a> ---->相对路径 <a href"http://www.baidu.com">超链接请求</a> ---->绝对路…

【前端】React项目初体验

React介绍 React 是一个非常流行的 JavaScript 前端框架&#xff0c;它为开发人员提供了一种快速构建高质量用户界面的方式。以下是使用 React 构建项目的初体验&#xff1a; 安装 React 和相关依赖项 使用 React 开发项目需要先安装一些必需的依赖项&#xff0c;包括 Node.…

Echarts 中国地图

直接展示效果图&#xff1a; 我们需要引入两个文件&#xff1a; echarts.js 官网地址下载&#xff1a;快速上手 - Handbook - Apache ECharts chain.js 这个官网已经找不到了&#xff0c;需要自行搜寻下载 也可以私信我(网上下载的China.js会导致省名称定为不准确&#xff0…

leetcode 1002. 查找共用字符

2023.9.6 个人感觉这题难度不止简单&#xff0c;考察到的东西还是挺多的。 首先理解题意&#xff0c;可以将题意转化为&#xff1a;求字符串数组中 各字符串共同出现的字符的最小值。 分为三步做&#xff1a; 构造一个哈希表hash&#xff0c;初始化第一个字符串的字母出现频率…

如何挑选低值易耗品管理系统?优化企业管理效率与成本控制

在现代企业管理中&#xff0c;低值易耗品的管理是一个容易被忽视但却十分重要的环节。低值易耗品包括办公用品、耗材、工具等&#xff0c;它们虽然单价不高&#xff0c;但数量庞大且频繁使用&#xff0c;对企业的日常运营和成本控制有着重要影响。为了提高管理效率、降低成本&a…

【Git】删除本地分支;报错error: Cannot delete branch ‘wangyunuo-test‘ checked out at ‘XXX‘

目录 0.环境 1.问题描述 2.解决步骤 1&#xff09;使用命令切换到其他分支 2&#xff09;查看当前本地所有分支 3&#xff09;删除“wangyunuo-test”分支 0.环境 windows 11 64位 Git VScode跑代码 1.问题描述 在做项目过程中&#xff0c;想删除一个本地分支“wangyun…

JS返回NodeList和HTMLCollection详解

HTML DOM 集合 (Collection) 概述 HTML DOM 集合 (Collection) 是一组 HTML 元素&#xff0c;这些元素可以通过 JavaScript 代码进行访问和操作。HTML DOM 集合通常由一个或多个 HTML 元素组成&#xff0c;并提供了访问和操作这些元素的方法。HTML DOM 集合在 JavaScript 中非常…

解决DCNv2不能使用高版本pytorch编译的问题

可变形卷积网络GitHub - CharlesShang/DCNv2: Deformable Convolutional Networks v2 with Pytorch代码已经出来好几年了&#xff0c;虽然声称"Now the master branch is for pytorch 1.x"&#xff0c;实际上由于pytorch自1.11版开始发生了很大变化&#xff0c;原来基…

JAVA毕业设计096—基于Java+Springboot+Vue的在线教育系统(源码+数据库+18000字论文)

基于JavaSpringbootVue的在线教育系统(源码数据库18000字论文)096 一、系统介绍 本系统前后端分离 本系统分为管理员、用户两种角色(管理员角色权限可自行分配) 用户功能&#xff1a; 注册、登录、课程预告、在线课程观看、学习资料下载、学习文章预览、个人信息管理、消息…

elementUI——el-table自带排序使用问题

问题 排序表格默认第一列按降序排&#xff08;状态1&#xff09;&#xff0c;当点击其他列后&#xff08;状态2&#xff09;&#xff0c;改变日期&#xff0c;触发表格数据更新&#xff0c;发现列的排序还点亮在之前的操作上&#xff0c;没有按照默认来&#xff08;回到状态1&a…

Rokid Jungle--Max pro

介绍和功能开发 YodaOS-Master操作系统&#xff1a;以交换计算为核心&#xff0c;实现单目SLAM空间交互&#xff0c;具有高精度、实时性和稳定性。发布UXR2.0SDK&#xff0c;为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…

【C++精华铺】10.STL string模拟实现

1. 序言 STL&#xff08;标准模板库&#xff09;是一个C标准库&#xff0c;其中包括一些通用的算法、容器和函数对象。STL的容器是C STL库的重要组成部分&#xff0c;它们提供了一种方便的方式来管理同类型的对象。其中&#xff0c;STLstring是一种常用的字符串类型。 STLstrin…

既然有 HTTP 协议,为什么还要有 RPC

HTTP和RPC 什么是HTTP HTTP协议&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff0c;又叫做超文本传输协议。平时上网在浏览器上敲个网址就能访问网页&#xff0c;这里用到的就是HTTP协议。 什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;&…

VLAN间路由:单臂路由与三层交换

文章目录 一、定义二、实现方式单臂路由三层交换 三、单臂路由与三层路由优缺点对比四、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、定义 VLAN间路由是一种网络配置方法&#xff0c;旨在实现不同虚拟局域网&#xff08;VLAN&#xff09;之…

ssprompt:一个LLM Prompt分发管理工具

阅读顺序 &#x1f31f;前言&#x1f514;ssprompt介绍命令介绍Metafile介绍版本依赖规则 &#x1f30a; PromptHubGitHub Token &#x1f680; Quick Install系统依赖pip安装Linux, macOS, Windows (WSL)Windows (Powershell) &#x1f6a9; Roadmap&#x1f30f; 项目交流讨论…

Android手机防沉迷软件的基本原理

(现在手机游戏、短视频等不仅对小孩子负面影响巨大&#xff0c;连很多成年人都沉迷其中难以自拔&#xff0c;影响工作、生活、学习。这已经造成全社会性的巨大影响&#xff0c;长此以往&#xff0c;国将不国。本人仅在此以自己掌握的些许技术略尽绵薄之力&#xff0c;希望能抛砖…

一、了解[mysql]索引底层结构和算法

目录 一、索引1.索引的本质2.mysql的索引结构 二、存储引擎1.MyISAM2.InnoDB3.为什么建议InnoDB表要建立主键并且推荐int类型自增&#xff1f;4.innodb的主键索引和非主键索引&#xff08;二级索引&#xff09;区别5.联合索引 一、索引 1.索引的本质 索引:帮助mysql高效获取数…