mcpField
M
matlab-analyze-data

matlab-analyze-data

github.com/matlab数据与数据库1.2k133 次安装1 天前更新
代码仓库

关于 matlab-analyze-data

为需要生成 MATLAB 数据分析代码的用户提供技能,覆盖表格、时间表及数组工作流。它强调使用现代 MATLAB 函数,并要求先查阅相关参考文件。

主要功能

  1. 01探索表格结构与数据分布
  2. 02清理缺失值和异常值
  3. 03转换、筛选与汇总表格数据
  4. 04处理时间序列及网格数组
  5. 05按主题查阅参考文件

适用场景

  1. 01检查数据中的缺失值与重复项
  2. 02重采样并同步时间序列
  3. 03按组计算统计量
  4. 04筛选并归一化表格数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-analyze-data

安装后在 Claude Code 中输入/matlab-analyze-data确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

manifest.yaml
references/
answering-data-questions.md
array-and-grid-data.md
data-cleaning.md
data-transformation.md
data-types.md
eventtables.md
exploration.md
grouping-and-aggregation.md
smoothing-and-trends.md
tables-and-timetables.md

详细介绍

MATLAB 数据分析

使用符合 MATLAB 惯用风格的代码,通过表和时间表执行表格数据分析任务。

适用场景

  • 涉及表格数据的任务:探索、清理、转换或汇总表
  • 时间序列分析:重采样、同步、趋势检测、平滑
  • 回答有关表中数据的问题(前 N 项、筛选、组间比较)
  • 数据清理:缺失值、异常值、类型转换、归一化

不适用场景

  • 任务没有数据上下文(没有可处理的表、时间表、数组或日期/时间值)
  • 主要目标是可视化或绘图,而非数据分析(改用 matlab-build-chart)
  • 任务纯粹涉及符号数学、仿真或应用构建
  • 读取或写入文件——CSV、Excel、Parquet、MAT 文件(改用 matlab-import-export-data)
  • 数据无法装入内存,或需要外存处理(改用 matlab-choose-big-data-solution)
  • 存储或检索密码、令牌或 API 密钥(改用 matlab-secure-credentials)
  • 数据存储在关系数据库中(改用 matlab-use-database 或 matlab-use-duckdb)
  • 使用带标签的信号文件构建 ML 训练工作流(改用 matlab-prepare-signal-data)
  • 在表格数据上训练分类器或比较 ML 模型准确率(改用 matlab-classify-tabular-data)
  • 为优化有监督 ML 模型而设计或选择特征(改用 matlab-engineer-tabular-features)
  • 代码迁移或替换已弃用的 API(改用 matlab-modernize-code)

路由:阅读所有相关主题的参考资料

此技能涵盖表格、时间序列和基于数组的数据工作流所需的 MATLAB 核心函数,包括数值数组、传感器矩阵和网格数据。这些函数可原生处理 table、timetable 和数值数组,正确处理缺失数据,并针对性能进行了优化。优先使用此处推荐的现代函数(例如 groupsummary、datetime、fillmissing、smoothdata2),而不是旧版替代方案(例如 accumarray、nanmean、datenum)。只有在用户明确提出要求时才例外。

**以下每个部分都链接到一个参考文件。编写代码前,务必阅读每个相关主题的参考文件。**参考文件包含正确语法、常见陷阱以及可避免静默错误的“避免使用”模式。跳过参考资料可能导致采用已弃用的方法,或遇到已知陷阱。阅读后,在回复顶部注明 Reference files read: [list]。

关键函数 — 可用版本

此技能中的大多数函数在 R2023a 或更早版本中均可用。以下函数需要较新版本:

函数起始可用版本用途
paddata, trimdata, resizeR2023b将数组填充、裁剪或调整为目标长度
smoothdata2R2023b在矩形窗口内平滑二维网格数据
kdeR2023b估计单变量数据的核密度
clipR2024a将值限制在某个范围内
islocalmax2, islocalmin2R2024a检测二维网格数据中的局部极值
summary(增强版)R2024b支持数组(数值、datetime、duration、逻辑);新增 Statistics、DataVariables、Detail 名称-值参数
isapproxR2024b考虑容差的浮点数比较(对计算所得的值应使用此函数,而非 ==)
isbetween(数值型)R2024b检查元素是否位于数值范围内
numuniqueR2025a统计变量中的不同值数量
allbetweenR2025a验证所有值是否位于某个范围内
alluniqueR2025a验证所有值是否唯一

开始探索数据

当数据已存储在工作区变量中时,请先了解其结构和内容,再编写分析代码。

主题:

  • 汇总结构、形状和变量类型
  • 评估缺失数据的数量及其位置
  • 了解分布(数值四分位数、分类值计数)
  • 查找变量之间的相关性和关系
  • 检查重复项、唯一键和基数
  • 探索时间范围、规律性和时间模式

函数: summary、head、size、jsonencode、anymissing、allfinite、ismissing、groupcounts、numunique、allunique、kde、corrcoef、pivot、unique、isregular、isuniform、retime

阅读: exploration.md


数据类型

使用现代 MATLAB 类型替代旧式类型。现代类型速度更快、可读性更好,也能更好地与表函数配合使用。

主题:

  • 日期和时间(解析、运算、时区、提取年/月/日/小时)
  • 已用时间和日历偏移量
  • 文本数据(比较、搜索、拆分、编辑字符串)
  • 分类数据(有序排名、合并/重命名/重新排序类别)

函数: datetime、dateshift、year、month、day、weekday、quarter、hour、timeofday、ymd、hms、hours、days、minutes、seconds、calmonths、caldays、string、matches、contains、startsWith、extractAfter、extractBefore、replace、erase、strip、split、count、categorical、mergecats、renamecats、removecats、reordercats、countcats

阅读: data-types.md


表和时间表

表是存放表格数据的主要容器。当数据带有时间戳、时间向量或已知采样率时,请使用 timetable——它可以启用时间感知操作(自动按间隔调整平滑、填充和重采样)。

主题:

  • 创建表并设置其结构(变量与行、元数据、属性)
  • 按类型选择变量;点索引与花括号索引、圆括号索引的区别
  • 导入后转换变量类型
  • 处理非均匀间隔数据(SamplePoints)
  • 对时间序列进行重采样、对齐和同步
  • 按日期范围或时间容差筛选
  • 转换旧式 timeseries 对象

函数: table、timetable、table2timetable、vartype、convertvars、retime、synchronize、lag、timerange、withtol、timeseries2timetable、table2array、array2table

阅读: tables-and-timetables.md


事件表

使用 eventtable 为时间表的行添加事件、事件过程或阶段标记或注释(传感器异常、风暴、维护时段、警报)。请勿在时间表本身中添加布尔列、字符串标签或分类状态变量。

主题:

  • 根据时间戳和标签创建事件表(瞬时事件或区间事件)
  • 将事件附加到时间表
  • 按事件属性筛选时间表行
  • 从数据模式(峰值、阈值穿越)中提取事件
  • 将事件数据写入时间表行,以便导出或分组
  • 在绘图中自动叠加事件

函数: eventtable、eventfilter、extractevents、syncevents、withtol、stackedplot

阅读: eventtables.md


数据清理

使用 MATLAB 内置的检测和填充函数处理缺失值与离群值。切勿使用 == 比较缺失值。填充或移除之前,使用 standardizeMissing 转换哨兵值。

主题:

  • 检测缺失值(NaN、NaT、缺失字符串、未定义的分类值)
  • 将占位值("N/A"、-999、"")转换为标准缺失值
  • 填补间隙(插值、向前填充、移动窗口、按类型采用不同策略)
  • 限制长间隙的填充范围
  • 在聚合(mean、std、min、max)时跳过缺失值——使用正确的调用语法
  • 检测、移除或替换离群值
  • 检查值是否处于预期范围内;截断值

函数: ismissing、anymissing、standardizeMissing、fillmissing、rmmissing、isoutlier、rmoutliers、filloutliers、isbetween、allbetween、clip

阅读: data-cleaning.md


数据转换

筛选、排序、重塑、归一化、分箱、联接并管理表变量。使用向量化运算和内置函数,而不是遍历行的循环或手动编写 if-else 链。

主题:

  • 按条件或取值范围筛选行
  • 排序并获取前 N 行或后 N 行
  • 跨行或跨变量应用函数
  • 重命名、重排、添加、移除、拆分、合并变量
  • 转换类型并就地应用变换
  • 将连续值分箱为类别
  • 归一化、缩放、计算 z 分数
  • 在宽格式与长格式之间重塑(透视、堆叠、取消堆叠)
  • 根据键变量联接/合并表

函数: sortrows、topkrows、rowfun、varfun、convertvars、renamevars、movevars、addvars、removevars、splitvars、mergevars、discretize、normalize、clip、rescale、isapprox、isbetween、pivot、stack、unstack、rows2vars、innerjoin、outerjoin、join

阅读: data-transformation.md


分组与聚合

groupsummary 是分组统计的首选,而不是 findgroups+accumarray 或手动循环。使用 groupfilter 按组筛选行,使用 grouptransform 按组归一化,使用 pivot 进行交叉制表。

主题:

  • 按组计算统计量(mean、sum、std、min、max、自定义统计量)
  • 实时分箱(数值边界、按小时/月份/季节划分的时间箱)
  • 处理缺失或空组
  • 根据组级条件筛选行(例如,组的最小大小)
  • 移除各组的离群值
  • 在各组内归一化(z 分数、缩放)
  • 对计数或聚合值进行交叉制表

函数: groupsummary、groupcounts、groupfilter、grouptransform、pivot、findgroups

阅读: grouping-and-aggregation.md


平滑、趋势与模式

smoothdata 是统一的平滑入口点(不要使用需要 Curve Fitting Toolbox 的 smooth)。使用 detrend 或 trenddecomp 去除/分解趋势,并使用 islocalmax/islocalmin/ischange 检测模式。

主题:

  • 平滑含噪数据(移动平均、高斯、Savitzky-Golay、中位数)
  • 选择窗口大小(元素数量或带时间戳数据的持续时间)
  • 去除线性或多项式趋势
  • 分离趋势与季节性(季节性分解)
  • 查找峰值、谷值和局部极值
  • 检测均值、方差或斜率的突变
  • 汇总分布(分箱计数、直方图)

函数: smoothdata、movmean、movmedian、detrend、trenddecomp、islocalmax、islocalmin、ischange、histcounts、histogram

阅读: smoothing-and-trends.md


数组和网格数据

当数据是同质数值型,且满足以下任一条件时,请使用数组:数据天然为二维或网格形式、对性能要求较高,或由上游工具提供。对于二维网格,请使用专用的二维函数,不要对行或列循环调用一维函数。

主题:

  • 何时保留数组,何时转换为表
  • 沿特定维度运算(按行还是按列)
  • 使用 std、var、movstd、movvar 时维度参数的常见陷阱
  • 处理数组计算中的 NaN(不会自动处理)
  • 移动窗口统计和累积统计
  • 将数组填充、裁剪或调整大小至目标长度
  • 对网格进行二维空间平滑、间隙填补和峰值检测
  • 使用分组向量执行分组运算

函数: smoothdata2、fillmissing2、islocalmax2、islocalmin2、paddata、trimdata、resize、mink、maxk、bounds、rms、prctile、quantile、iqr、cumsum、cummax、cummin、cumprod、movmean、movmedian、movsum、movstd、movvar、isuniform、isregular

阅读: array-and-grid-data.md


回答有关数据的问题

当任务是回答有关数据的特定问题(前 N 项、筛选、查找、比较)时,请阅读策略参考,以避免排序方向、缺失数据和值解释方面的常见错误。

主题:

  • 查找最高、最低、前 N 项或后 N 项
  • 根据某一列的排名查找另一列中的值
  • 在回答中考虑缺失值或占位值
  • 返回原始数据值,不进行替换或映射
  • 统计符合条件的行数(精确匹配与部分文本匹配)

函数: topkrows、sortrows、groupsummary、standardizeMissing、isapprox、matches、contains、height、nnz

阅读: answering-data-questions.md


版权所有 2026 The MathWorks, Inc.

评论

支持 Markdown