【发布时间】:2014-09-16 07:13:31
【问题描述】:
我尝试使用 Burrows-Wheeler 变换来实现图像压缩。考虑路径扫描的一维矩阵是:
p = [2 5 4 2 3 1 5];
然后应用 Burrows-Wheeler 变换:
function output = bwtenc(p)
n = numel(p);
x = zeros(length(p),1);
for i = 1:length(p)
left_cyclic = mod(bsxfun(@plus, 1:n, (0:n-1).')-1, n) + 1;
x = p(left_cyclic);
end
[lex ind] = sortrows(x);
output = lex(:,end);
output = uint8(output(:)');
end
而且它有效!但问题是当我尝试从大小为 512*512 的 Lena.bmp 实现一维矩阵时,错误消息显示 bsxfun 内存不足。请任何人帮助我。
【问题讨论】:
-
循环是否必要?
x似乎在所有迭代中都采用相同的值 -
感谢您的修改。我已经删除了循环但仍然是同样的问题。错误信息:使用 bsx fun 时出错,内存不足。请帮忙
-
当然,内存问题不是因为循环。
bsxfun正在尝试创建一个 512^2 x 512^2 方阵;这就是问题 -
创建 512x512 矩阵怎么会有问题?你在什么系统配置?
p的大小是多少? -
那么你对我有什么建议吗?我使用 bsxfun 进行左循环排列。也许您有任何代码可以替换它?非常感谢您的帮助