【发布时间】:2013-09-10 17:25:02
【问题描述】:
我有一个描述一段数据的 2 列矩阵,以及该数据在一组中出现的次数:
A = [1 6
2 2
3 8
4 1
5 3];
鉴于此,是否有一种“优雅”的方式来生成基础数据集?即,
B = [1 1 1 1 1 1 2 2 3 3 3 3 3 3 3 3 4 5 5 5];
从B 到A 有很多方法(tabulate,使用unique and histc 等),但我找不到从A 到B 的任何方法。我能做的最好的就是不优雅:
B = [];
for ii = 1:size(A,1)
B = [B repmat(A(ii,1), 1, A(ii,2))];
end
我暗中怀疑“正确”的做法是使用bsxfun 或accumarray,但我没有足够的经验来理解它们的实际工作原理。
【问题讨论】:
-
@Dang Khoa 您正在寻找run-length decoding。查看发布的重复 Amro!
-
@EitanT 谢谢!我没有意识到这种计划有一个名字。我投票决定关闭,因为这是重复的。
标签: matlab run-length-encoding