图片缩略图"itemprop=

埃博拉酱的数据操纵工具包数据操作工具

版本4.1.0 (293 KB) 埃博拉酱
提供了一系列扩展的数组操纵方法

11下载

更新2021年8月02

从GitHub

在GitHub上查看许可证

埃博拉酱的MATLAB数据操纵工具包,提供一系列MATLAB内置函数所欠缺,但却常用的增强功能

本项目的发布版本号遵循语义化版本规范。开发者认为这是一个优秀的规范,并向每一位开发者推荐遵守此规范。

目录

本包中所有函数均在EbolaChan.DataManipulation命名空间下,使用前需导入。使用命名空间是一个好习惯,可以有效防止命名冲突,避免编码时不必要的代码提示干扰。

进口EbolaChan.DataManipulation。

ArrayBuilder <处理(MATLAB类)

数组累加器

将数码向内存中间,经常遇到需要不成累加入数量,matlab会提示预分享内存。但如果读取之象无内存会有多种项,预分享到会变成一体个个麻烦的动词任务。本类建立一个增长维度,在此维度上可以不成集一个内置只不屑附录即可口,无需考虑内存分类的问题,本地会自动驾驶优化的内存致理性。

构造一个沿第1维度累加的数组AbArrayBuilder1);加加一个13.Ab。附加兰迪([09],兰迪([03.]),3.));结束Ab.Harvest继续累加一个13.Ab。附加兰迪([09],兰迪([03.]),3.));结束Ab.Harvest%{ans =8 3 48 2 90 8 11 1 85 8 31 6 5ans =8 3 48 2 90 8 11 1 85 8 31 6 50 2 1//数控机生成,每次运行可不锈%}

构造参数:BuildDimension (1,1) uint8 = 1,累加维度。数组的这个维度将不断累加增长,其它维度将由第一次追加决定,以后不再改变。

只读属性

BuildDimension(1,1)UINT8,加加维度

成员方法

附加

向数组累加新内容

输入参数:新,要累加的内容。第一次可以累加任意内容,以后累加内容可以和第一次在累加维度上尺寸不一致,其它维度必须尺寸一致。

收成

收获累加完毕的MATLAB数组。收获后可以释放本对象,也可以继续累加。

返回值:数组,累加完毕的MATLAB数组。

清晰的

清空储藏,从零开始重新累加,而不必新建对象重新分配内存,具有较高的性能。

CorrelationMatrixSort

对相关性矩阵进行排序,使得相关性高的个体尽可能彼此接近

相关性矩阵是一个正方形矩阵,可由corrcoef函数得到,表征多维数据个体之间的线性相关性。相关性矩阵的主对角线上所有值均为1,表示每个个体与自身绝对相关。其它值代表编号为该值所在行和所在列的两个个体之间的相关性。相关性矩阵可以作热图,但如果相关性高的个体不能在图上相互靠近成一个群体,就难以通过肉眼从相关热图上分辨出群体。因此需要对相关矩阵进行排序,将相关性高的个体尽可能凑在一起。

负载CorrelationMatrix.mat);tiledlayout, TileSpacing紧的,填充紧的);nexttile;显示亮度图像(CorrelationMatrix);标题未排序);未排序的相关热图,看起来眼花缭乱,很难分辨出高相关群体nexttile;[SortIndex, SortedCM] =CorrelationMatrixSort(CorrelationMatrix);显示亮度图像(SortedCM);标题已排序);排序后,高相关的繁体聚集在一起,并且可以显示排序题CBcolorbar;CB.Layout.Tile;SortIndex

输入数

厘米(:,:),未排序的相关矩阵,必须是正方形

返回值

SortedIndex(: 1)双排序编号,以个体在原矩阵中的位置为索引的排序,即SortedCM = SortedCM (SortIndex SortIndex)。

SortedCM(:,:),排序后的矩阵

DividequallyOndimensionsintocells.

将一个数组沿指定多个维度尽可能均等地拆分到多个元胞中

> > DivideEquallyOnDimensionsIntoCells(兰德(3,3,3),2,2)ans = 1×2细胞数组{3×1×3双}{3×2×3双}

输入数

数组,要拆分的数组

维度(1:)uint8,要拆分哪些维度

NoDivisions uint8(1:),每个维度拆成几份,顺序与维一一对应

返回值

阵列单元,拆分后的元胞数组。如果维度尺寸是拆分数的整倍数,将均等拆分;如果不整倍,则将尽可能均等,各分块尺寸最多相差1。

DelimitedStrings2Table

将一列分隔符字符串的前几个字段读出为表格或时间表

分隔符字符串列如下形式:

400 v_0002.registered.measurements 4003.20210204.BlueBase.All.10 %。垫4003.20210204.BlueBase.PV.10 v_0002.registered.measurements % 400。垫4003.20210204.GreenRef.All.10 v_0005.registered.measurements % 400。垫4003.20210204.GreenRef.PV.10 v_0005.registered.measurements.mat % 400

每行一个字符串,字符串用特定的符号分割成了一系列字段。如果前几个字段有固定的意义且在所有字符串中都存在,则可以将它们读出成表。如果某个字段是时间,还可以读出成时间表。

字符串4003.20210204.BlueBase.All.10 % 400 v._0002.registered.measurements.mat4003. registered.measurements.20210204.bluebase.pv.10 % 400 v._0002.mat4003.20210204.Measurements.GreenRef.All.10 % 400 v._0005.registered.matMeasurements.4003.Registered.20210204.GreenRef.PV.10 % 400 v._0005.mat];忽略“注册”和“测量”两个无关关键词后,第2个字段始终是日期,其他字段分别具有各自的意义:表格DelimitedStrings2Table(字符串,[鼠标实验CellGroup条件TrialNumber],,时间菲尔德2, IgnoreKeywords注册测量])%{表=4×5时间表时间鼠标实验Cellgroup条件Trialnumber__________ ______ __________ _________ _________ ___________“4003”“BlueBase”“All”“10%400V”“_0002”“4003”“BlueBase”“PV”“10%400V”“_0002”2021-02-04“4003”“GreenRef”“全部”“10%400V”“_0005”“4003”“GreenRef”“PV”“10%400V”“_0005”%}

必需参数

字符串(:1)字符串,分隔符字符串列

FieldNames(: 1)字符串,从头开始按顺序排列每个字段的名称。如果有时间字段或被忽略的关键字段,直接跳过,不要在字段名里指示,也不要留空,而是直接将后面的字段提前上来。

分隔符(1,1)字符串,分隔符,将传递给分割用于分隔。

名称-值参数

TimeField (1, 1) uint8 = 0,时间字段在字符串中是第几个字段,被忽略的字段不计入该序号。如果设为0,则没有时间字段,返回普通表;否则返回时间表。

: DatetimeFormat(1)字符= yyyyMMddHHmmss,日期时间格式。不支持含有分隔符的日期时间格式,时间字段字符串必须全为日期时间数字,如"20210306", "202103061723"等。如果实际的字段长度不足,将会自动截短格式字符串以匹配之。将作为datetime函数的InputFormat参数。时间字段在所有字符串之间不需要长度相同。如果TimeField为0,将忽略该参数。

: IgnoreKeywords(1)字符串,如果分隔出的字段正好是某些关键词,忽略它们,不会被读出为字段,也不计入位置编的号。如果时间字段出现在被忽略的字段之后,每有一个忽略字段,TimeField都应当1。

返回值

表(:,:),如果TimeField为0,返回表,否则返回时间表。

EstimateMemoryCapacity

评估当前空闲内存能存放多少份样本数组

处理文件时,出于性能考虑,总是希望能尽可能将文件一口气全部读进内存,计算完毕后再一口气写出,因为磁盘总是顺序读写快于随机读写。但是文件较大时,有限的内存只能支持分块读入、写出,这时就需要考虑每个分块多大的问题。

大文件通常可以拆分成单次读取的最小数据单元,称为数据片。例如对于视频,一帧就是一个数据片。本函数可以取得当前系统空闲内存,计算当前内存可以承载多少个数据片,以便帮助决策分块尺寸。

输入参数:样本,实数数组,一个数据片样例

输出读数:容量(1,1)双,当前内存可容纳多少数码

IntegralSplit

将一个大整数拆分成尽可能相等的多个小整数之和

>> Integralsplit(10,3)ANS = 3×1 UINT8销量3 4 3

输入数

(1, 1) uint8求和,要拆分的大整数

NoSplits (1,1) uint8拆分的份数

返回值

部分(:1)uint8,拆分后的小整数,其和等于大整数。如果和正好是NoSplits的整倍数,这些小整数相等;否则最多相差1。

大罚任

计算信号的主频

主频是对信号做傅里叶变换以后,将各个频率加权几何平均后得到的平均频率。

x0.010.01One hundred.;图;持有典型高主频信号YHigh(x10)*10+(x/10)/10典型低主频信号YLow(x10)/10+(x/10)*10传说([情节(x, YHigh)情节(x, YLow)]、[sprintf主频% .2g㎐大罚任(yhigh,samplereOne hundred.))sprintf主频% .2g㎐大罚任(YLow SampleRateOne hundred.))));XLabel.时间(年代));

必需参数

信号,信号数组

名称-值参数

维度(1,1),计算维度,默认长度大于1的第1个维度

SampleRate(1, 1) = 1,采样率

返回值

Mf,计算维度上的主频。该数组尺寸在计算维度上为1,其它维度上与信号相同。

MaxSubs

返回数组的最大值以及所在的坐标。

MATLAB自带的马克斯函数只能返回多维数组最大值的线性索引。本函数一口气返回最大值以及多维坐标,方便易用

对于有多个最大值的数组,返回线性索引最小的那个位置的坐标:(价值,S1, S2) =MaxSubs([991;144;989])%{值=9S1 =1S2 =1%}

输入数

数据,要寻找最大值的多维数组

返回值

值(1,1),最大值

(S1, S2,…,Sn),最大值所在的位置中,线性索引最小的那个位置的坐标。每个返回值依次代表各维度的坐标。

MeanSem

一流高度算出数码沿的平等和标准误。

具体算法:$ $ S = \和x $ $ $ $的意思= \压裂{年代}{N} $ $ $ $ SEM = \压裂{\√6 {\ {x ^ 2} - S总和\ cdot意味着}}{N} $ $

(意思是,SEM) =MeanSem([063.;876;971],1%{平均=5.6667 6.6667 3.3333SEM =2.3254 0.2722 1.1863%}(意思是,SEM) =MeanSem([063.;876;971])%{平均=5.2222SEM =0.9910%}

输入数

数据,数据数组

维度,可选,聚合维度。输出的意思和SEM,其维维度上长度为1,其它维度上长度与数据相同。默认所有维度,此时意味着和SEM为全局平均数和标准误标量。

返回值

意思是双,沿维度的平均值

SEM翻倍,沿维度的标准误

MinSubs

返回数组的最小值以及所在的坐标。

MATLAB自带的最小值函数只能返回多维数组最小值的线性索引。本函数一口气返回最小值以及多维坐标,方便易用

对于有多个最小值的数组,返回线性索引最小的那个位置的坐标:(价值,S1, S2) =MinSubs([991;144;989])%{值=1S1 =2S2 =1%}

输入数

数据,要寻找最小值的多维数组

返回值

值(1,1),最小值

(S1, S2,…,Sn),最小值所在的位置中,线性索引最小的那个位置的坐标。每个返回值依次代表各维度的坐标。

StructAggregateByFields

对结构体的每个字段执行累积运算,累积结果放在一个字段相同的结构体标量中返回。

一个1)。一种1一个1).b2一个2)。一种3.一个2).b4;BStructAggregateByFields(@cell2mat)

输入数

AggregateFunction function_handle(1,1),要执行的累积函数,必须接受一个和StructArray尺寸相同的元胞数组输入

StructArray结构,要累积的结构体数组

返回值

(1,1)结构、和StructArray字段相同的结构体标量,保存每个字段各自的累积运算结果。

SuperCell2Mat

Cell2mat的升级版

本函数是cell2mat的升级版,使用前请先参阅cell2mat函数文档,了解其功能和局限性。

cell2mat是一个功能十分强大的MATLAB函数,可以将元胞数组内的数组提取出来,拼成一个大数组,而且这些数组的尺寸不必完全相同,例如可以支持以下拼接:

但它也现出的。首先,只只数,逻辑,繁体,字符的拼接,其它常见数量类型(字符串,元胞,类对象)都都无。对于以下结构,虽然尺寸恰好合理,但但也无拼接:

这是因为cell2mat默认先拼第1维,自然会遇到尺寸不匹配的问题。但我们可以看的到,只要先拼第2维,就可以得到1×3和2×3两个矩阵,然后第1维就可以拼接了。本函数不仅支持各种数据类型,还会自动尝试从不同的维度进行拼接,因此支持更多复杂的结构。

输入参数:细胞细胞,要拼接的元胞数组,各元胞内含有数据类型一致的数组,且各维尺寸上恰好可以拼接成一个大数组,维度不限。

返回值:拼接好的大数组

引用作为

埃博拉酱 (2021).埃博拉酱的数据操纵工具包数据操作工具(https://github.com/silver-fang/ebolachansdatamanipulationtoolbox/releases/tag/v4.1.0),github。检索到

MATLAB版本兼容性
创建R2021a
与R2021a及后续版本兼容
平台的兼容性
窗户 macOS Linux
标签添加标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

+ EbolaChan / + DataManipulation

要查看或报告这个GitHub插件中的问题,请访问GitHub库
要查看或报告这个GitHub插件中的问题,请访问GitHub库