使用bsxfun MATLAB进行内存不足

时间:2014-09-15 22:30:19

标签: matlab image-compression

我尝试使用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

它有效!但问题是当我尝试从Lena.bmp实现1D矩阵时,其大小为512 * 512,错误消息显示bsxfun内存不足。有人请帮帮我。

1 个答案:

答案 0 :(得分:0)

看看这是否适合你 -

function output = bwtenc(p) 
np = numel(p);
[~,sorted_ind] = sort(p);
ind1 = mod((1:np)+np-2,np)+1;
output = p(ind1(sorted_ind));
output = uint8(output(:)');
end