【发布时间】:2016-01-27 14:20:47
【问题描述】:
我的老师让我们在 MATLAB 中编写 Huffmam Coding 的程序,但我遇到了一个问题:
“cell”类型的输入参数的未定义函数“lt”。
work5455 中的错误(第 49 行)
这是哪一行:
if(cell{k+1}(1)<cell{k}(1)&&cell{k}(2)==-1)
既然没有'lt',我该如何解决呢? 我的老师太忙了,没有时间回复我的电子邮件...... 这是代码(未完成),非常感谢!
fprintf('Reading data...')
data=imread('C:\Users\dell\Desktop\2.png');
data=rgb2gray(data);
data=uint8(data);
fprintf('Done!\n')
if~isa(data,'uint8'),
error('input argument must be a uint8 vector')
end
f=repmat(0,1,256);
len=length(data);
for j=0:255
for i=1:len
if data(i)==j;
f(j)=f(j)+1;
end
end
end
f=double(f./len);
simbols=find(f~=0);
f=f(simbols);
[f,sortindex]=sort(f)
simbols=simbols(sortindex)
len=length(simbols);
codeword=cell(1,len);
huffnode=cell(1,2*len);
for i=1:len
cell{i}={f(i),-1,-1,-1};
end
for i=len+1:2*len-1
cell{i}={-1,-1,-1,-1};
end
m=len
%for i=1:len
for j=1:len+i-1
m=m-1;
for k=1:m
if(cell{k+1}(1)<cell{k}(1)&&cell{k}(2)==-1)
cell{2*len}=cell{k+1};
cell{k+1}=cell{k};
cell{k}=cell{2*len};
end
end
end
【问题讨论】:
-
不要覆盖代码中的内置变量,例如
cell、i、j等。这至少可以清理部分混乱 -
我猜
lt的意思是“小于” -
不要使用
cell作为变量名