RUNLENGTH——行程长度编码
行程长度编码矢量分解为一个向量,其中包含的
元素不相邻的重复,和第二个向量
包含重复的次数。
这可以减少内存来存储数据或允许分析序列。
编码:[B, N, BI] = RunLength (X)
解码:X = RunLength (B、N)
输入/输出:
X:完整的输入信号,行或列向量。
类型:(U) INT8/16/32/64,单,双,逻辑,CHAR。
B:压缩数据,相邻元素具有相同的值删除。
B和X具有相同的类型。
N:重复的元素B在双X或UINT8行向量。
BI:指数X元素B的双行向量。
RunLength (X,“字节”)回复N UINT8向量。
你可以找到很多FileExchange RLE工具了。这个C-Mex
矢量化M-versions大约5倍好。
的m文件RunLength_M包含矢量化教育并循环m。
例子:
编码和解码:
[b、n] = RunLength ([8 9 9、10、10、10、11))
x = RunLength (b、n)
% b = (8、9、10、11), n = (1、2、3、1), x = (8、9、9、10、10、10、11)
限制计数器255:
[b、n] = RunLength((257),“字节”)
% b = [1], n = uint8([2] 255年)
逻辑输入:
[b、n] = RunLength([真(257 1);假)
% b =[真实;假),n =[1] 257年
发现最长的序列:
x =地板(兰德(1,1 e6) * 2);
[b, n, bi] = RunLength (x);
[longestRun,指数]= max (n);
longestPos = bi(指数);
第一次编译c代码自动RunLength。
参见“RunLength_ReadMe。txt”的更多细节。
单元测试uTest_RunLength测试效度和速度。
测试:Matlab 6.5, 7.7, 7.8, 7.13, Win7/64 WinXP / 32
编译器:LCC3.8、BCC5.5 OWC1.8 MSVC2008/2010
没有编译下LCC2.4附带Matlab / 32 !
假定兼容性:更高的Matlab版本,Linux, MacOS。
引用作为
1月(2023)。RunLength(//www.tatmou.com/matlabcentral/fileexchange/41813-runlength), MATLAB中央文件交换。检索。