早教吧 育儿知识 作业答案 考试题库 百科 知识分享

请高手帮我看段MATLAB的程序,有几个地方不懂意思,最好能帮我每句都写个注释.此程序是huffman编码.I=imread(‘code.gif’);[m,n]=size(I);p1=1;s=m*n;for k=1:mfor L=1:nf=0;for b=1:p1-1if (c(b,1)==I(k,L)) f=1;break;endendif

题目详情
请高手帮我看段MATLAB的程序,有几个地方不懂意思,最好能帮我每句都写个注释.此程序是huffman编码.
I=imread(‘code.gif’);
[m,n]=size(I);
p1=1;s=m*n;
for k=1:m
for L=1:n
f=0;
for b=1:p1-1
if (c(b,1)==I(k,L)) f=1;break;end
end
if(f==0) c(p1,1)=I(k,L);p1=p1+1;end
end
end
上面这段程序将图像的不同颜色统计在数组c的第一列中.
for g=1:p1-1
p(g)=0;c(g,2)=1;
for k=1:m
for L=1:n
if(c(g,1)==I(k,L)) p(g)=p(g)+1;end
end
end
p(g)=p(g)/s;
end
这段程序将相同颜色的像素数占图像总数的比例统计在数组p中
pn=0;po=1;
while(1)
if(pn>=1.0) break;
else
[pm,p2]=min(p(1:p1-1));p(p2)=1.1;
[pm2,p3]=min(p(1:p1-1));p(p3)=1.1;
pn=pm+pm2;p(p1)=pn;
tree(po,1)=p2;tree(po,2)=p3;
po=po+1;p1=p1+1;
end
end
主要是在 for L=1:n
f=0;
for b=1:p1-1
if (c(b,1)==I(k,L)) f=1;break;end
end
if(f==0) c(p1,1)=I(k,L);p1=p1+1;end
end
这里p1前面已经赋值1,在 for b=1:p1-1这里如何操作呢?用C语言的语法实在难以理解,
▼优质解答
答案和解析
for b= 1:pi-1 就是说循环 pi-1 次.b是循环变量.相当于c的for(i=1,i