当前位置: 首页 > news >正文

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' 方法计算平均值的最近邻的数量,指定为正整数标量。

相关文章:

MATLAB中fillmissing函数用法

目录 语法 说明 示例 包含 NaN 值的向量 由 NaN 值组成的矩阵 插入缺失数据 使用移动中位数方法 使用自定义填充方法 包含缺失端点的矩阵 包含多个数据类型的表 fillmissing函数的功能是填充缺失的条目。 语法 F fillmissing(A,constant,v) F fillmissing(A,meth…...

电脑同时连接有线和无线网络怎么设置网络的优先级

电脑同时连接有线和无线网络怎么设置网络的优先级&#xff1a; 我们知道在 笔记本电脑系统 中&#xff0c;可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况&#xff0c;应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有Wi…...

el-form表单动态校验(场景: 输入框根据单选项来动态校验表单 没有选中的选项就不用校验)

el-form表单动态校验 el-form常规校验方式: // 结构部分 <el-form ref"form" :model"form" :rules"rules"><el-form-item label"活动名称: " prop"name" required><el-input v-model"form.name" /…...

Java 数据结构与算法应该如何学习?

学习数据结构是计算机科学和软件工程领域中的重要基础知识之一。掌握数据结构对于编写高效、可扩展和可维护的代码至关重要。 1、掌握基本概念 首先&#xff0c;你需要掌握数据结构的基本概念。了解不同类型的数据结构&#xff0c;如数组、链表、栈、队列、树、图等&#xff…...

力扣(LeetCode)算法_C++——有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; …...

制造企业如何优化物料控制?

导 读 ( 文/ 2127 ) 物料控制是指对制造过程中所涉及的物料流动和库存进行有效管理和控制的过程。它包括物料需求计划、供应商管理、物料采购、物料接收和入库、物料库存管理以及物料发放和使用等关键环节。通过精确的物料需求计划和库存管理&#xff0c;物料控制可以确保物料供…...

《Go语言在微服务中的崛起:为什么Go是下一个后端之星?》

&#x1f337;&#x1f341; 博主猫头虎&#x1f405;&#x1f43e; 带您进入 Golang 语言的新世界✨✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f…...

因为axios请求后端,接收不到token的问引出的问题

vue axios请求后端接受不到token的问题。 相关概念 什么是跨域&#xff1f; 跨域指的是在浏览器环境下&#xff0c;当发起请求的域&#xff08;或者网站&#xff09;与请求的资源所在的域之间存在协议、主机或端口中的任何一个条件不同的情况。换句话说&#xff0c;只要协议、…...

Stable Diffusion 免费升级 SDXL 1.0,哪些新特性值得关注?体验如何?5 分钟带你体验!

一、引言 7 月 26 日&#xff0c;Stability AI 发布了 SDXL 1.0&#xff0c;号称目前为止&#xff0c;最厉害的开放式图像生成大模型。 它到底有没有网上说的那么炸裂&#xff1f;真的已经实现了像 midjourney 一样 靠嘴出图 的功能吗&#xff1f;相对于之前的版本&#xff0c;…...

【广州华锐互动】煤矿设备AR远程巡检系统实现对井下作业的远程监控和管理

煤矿井下作业环境复杂&#xff0c;安全隐患较多。传统的巡检方式存在诸多弊端&#xff0c;如巡检人员难以全面了解井下情况&#xff0c;巡检效率低下&#xff0c;安全隐患难以及时发现和整改等。为了解决这些问题&#xff0c;提高煤矿安全生产水平&#xff0c;越来越多的企业开…...

C语言与Java语言传输数据 需要转位

在Java语言中&#xff0c;可以通过将整数反转并修改字节顺序来实现低位转高位的转换。下面是一个示例代码&#xff0c;可以将一个整数从低位转高位&#xff1a; public static int toHH(int n) {byte[] bytes ByteBuffer.allocate(4).putInt(n).array();for (int i 0; i <…...

Framework开发——系统默认语言修改

Android 系统原版默认的语言为英文,但是对于中国大陆 Android 产品厂商来说,我们定制系统可能需要用户一开机就是简体中文。所以把 Android 系统出厂设置为简体中文对于 Android 系统产品化非常重要,我们可以通过修改系统属性来达到默认语言的作用。本文主要是在 Android 11…...

浅谈原型链

一.在掌握原型链之前首先要了解这三点 1.每个函数都有prototype这个属性我们称为原型对象 2.每个对象都有__proto__这个属性 3.对象的__proto__可以访问原型对象上的方法和变量,如果访问不了,就会向上进行查找,直到找不到为止,会出现报错的情况l。 二.例子 1.代码: let arr …...

合宙Air724UG LuatOS-Air LVGL API控件-截屏(Screenshots)

截屏&#xff08;Screenshots&#xff09; 分 享导出pdf 截屏功能&#xff0c;core版本号要>3211 示例代码 -- 创建图片控件img lvgl.img_create(lvgl.scr_act(), nil)-- 设置图片显示的图像lvgl.img_set_src(img, "/lua/test.png")-- 图片居中lvgl.obj_align(…...

【系统设计系列】 负载均衡和反向代理

系统设计系列初衷 System Design Primer&#xff1a; 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版&#xff1a; https://github.com/donnemart…...

Halcon实现3维点云平面拟合

Halcon实现3维点云平面拟合 function main()WindowHandle open_window()ObjectModel3D load_3D_model("1.om3")ObjectModel3DSelected remove_noise(ObjectModel3D)[X, Y, Z] extract_coordinates(ObjectModel3DSelected)[NX, NY, NZ, C] fit_plane(X, Y, Z)vi…...

安全学习DAY23_CookieSessionToken

文章目录 Cookie和Session的区别Token的作用 Cookie和Session的区别 Cookie和Session都是用来在Web应用程序中跟踪用户状态的机制 1、存储位置不同&#xff1a; Cookie是存储在客户端&#xff08;浏览器&#xff09;上的&#xff0c;而Session是存储在服务器端的。 2、安全…...

C++ map clear内存泄漏问题

map值存的是指针 map自带的clear()函数会清空map里存储的所有内容&#xff0c;但如果map值存储的是指针&#xff0c;则里面的值不会被清空&#xff0c;会造成内存泄漏&#xff0c;所以值为指针的map必须用迭代器清空。 使用erase迭代删除 迭代器删除值为指针的map&#xff0c…...

【鲁棒电力系统状态估计】基于投影统计的电力系统状态估计的鲁棒GM估计器(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

怎么判断一个ip地址是否正确

在网络通信和计算机领域中&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff09;是一个关键的概念。但是&#xff0c;很多人对于如何判断一个IP地址是否正确感到困惑。本文将深入探讨这个问题&#xff0c;并提供一些实用的方法来验证IP地址的正确性。 IP地址是…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...