登录论坛

查看完整版本 : [求助]matlab实现对一个8列矩阵的编码程序


rain1206
2009-03-28, 12:36
b=[1 0 0 0 1 0 0 1;1 0 0 1 0 1 0 0;1 0 0 1 1 0 0 0;1 0 0 1 1 1 1 1]
[m,n]=size(b);
f=[];
f(1,1:8)=b(1,1:8);
for i=2:m
if b(i,5:8)==[1 1 1 1]
b(i,5:8)=[0 1 1 1];
end
if b(i,1:4)~=b(i-1,1:4)
f(i*4+1:(i+1)*4)=[1 1 1 1];
f((i+1)*4+1:(i+2)*4)=b(i,1:4);
f((i+2)*4+1:(i+3)*4)=b(i,5:8);
else
f(i*4+1:(i+1)*4)=b(i,5:8);
end
end
f

我想实现对一个8列矩阵的编码,编码的思想是:每一行代表一个码,前四列为段码,后四列为段内码,若相邻码的段码一致,即在同一段,就只存储短内码;若若相邻码的段码不一致,即不在同一段,则在段码之前插入【1 1 1 1】,后面跟的是段码,段内码;为了与段内码的加以区别,若段内码为【1 1 1 1】,则将其减1 。
以上是我写的程序,但是运行结果不准确,须插入的【1 1 1 1】时未能插入, 希望高手指点一下,谢谢!

rain1206
2009-03-28, 19:11
我在学习编码,但编程技术还很嫩,有高手愿意帮我吗?
QQ:815303307 希望可以有机会向高手学习!!!

laosam280
2009-04-01, 23:11
当你检测出来是第 i 行需要插入[1 1 1 1]时,就用b(i,[1,2,3,4])=[1 1 1 1]就可以了