clear all;
create RUDE input
rlen = [0 nan 2 2 3 inf -inf 2];
rval = [3 4 -5 6 -7 8 9 -10];
run-length decoding
vec = rude(rlen,rval)
vec = -5 -5 6 6 -7 -7 -7 -10 -10
run-length encoding
[len,val] = rude(vec)
len = 2 2 3 2
val = -5 6 -7 -10
run-length decoding
vec = rude([2 3 3 2],'aBBc')
vec = aaBBBBBBcc
run-length encoding
[len,val] = rude(vec)
len = 2 6 2
val = aBc
create test structures
s.x = pi;
t.x = pi; % note <s> and <t> are equal!
u.y = pi;
create RUDE input
rlen = [nan 1 0 3 3,...
2 3 2 1 2,...
2 2 2 -inf 2];
rval = {0 'a' 'bb' 'ccc' magic(3) 1:3 (1:3).',...
pi*(1:3) 3:-1:1 1:3 s t u pi 'dddd'};
use subroutines
rs = rude;
run-length decoding
vec = rs.d(rlen,rval)
vec =
'a' 'ccc' 'ccc' 'ccc' [3x3 D] [3x3 D]
[3x3 D] [1x3 D] [1x3 D] [3x1 D]
[3x1 D] [3x1 D] [1x3 D] [1x3 D]
[1x3 D] [1x3 D] [1x3 D] [1x1 S]
[1x1 S] [1x1 S] [1x1 S] [1x1 S]
[1x1 S] 'dddd' 'dddd'
run-length encoding
[len,val] = rs.e(vec);
show results
rlenin = rlen
rlenused = rlen(rlen>0)
rlenout = len
rlenin = NaN 1 0 3 3 2 3 2 1 2 2 2 2 -Inf 2
rlenused = 1 3 3 2 3 2 1 2 2 2 2 2
rlenout = 1 3 3 2 3 2 1 2 4 2 2
for i = 1:length(val)
disp(sprintf('---- value %2d [%2d x %s]',...
i,len(i),class(val{i})));
disp(val{i});
end
---- value 1 [ 1 x char]
a
---- value 2 [ 3 x char]
ccc
---- value 3 [ 3 x double]
8 1 6
3 5 7
4 9 2
---- value 4 [ 2 x double]
1 2 3
---- value 5 [ 3 x double]
1
2
3
---- value 6 [ 2 x double]
3.1416 6.2832 9.4248
---- value 7 [ 1 x double]
3 2 1
---- value 8 [ 2 x double]
1 2 3
---- value 9 [ 4 x struct]
x: 3.1416
---- value 10 [ 2 x struct]
y: 3.1416
---- value 11 [ 2 x char]
dddd