MATLAB Answers

HOW TO ENCODE AN 8BIT VALUE FROM A MATRIX

5 ビュー (過去 30 日間)
Abirami
Abirami 2014 年 8 月 14 日
編集済み: Abirami 2014 年 8 月 15 日
HELLO
I have generated a 256x256 matrix with an 8bit binary sequence present in each element. I wish to encode the sequence using the following scheme
A=00
B=01
C=10
D=11
i need to encode the whole matrix.please help.the matrix generated is from the following code
clc
clear all
close all
a=imread('C:\Users\Abzz\Desktop\lena.png');
imshow(a)
disp(a)
for i=1:1:256
for j=1:1:256
b{i,j,1} = dec2bin(a(i,j),8);
end
end
disp(b)
M=randint(256,256,[0,256]);
disp(M)
for k=1:1:256
for l=1:1:256
N{k,l,1} = dec2bin(M(k,l),8);
end
end
disp(N)
thanks in advance

  0 件のコメント

サインインしてコメントする。

採用された回答

Pratik Bajaria
Pratik Bajaria 2014 年 8 月 14 日
Hello, Check this. I think it would work for you. It worked for me fine.
for i=1:size(b,1)
for j=1:size(b,2)
dum=0;
for k=1:2:size(b,3)
dum=dum+1;
if (b(i,j,k)*10+b(i,j,k+1))==00
test(i,j,dum)='A';
elseif (b(i,j,k)*10+b(i,j,k+1))==01
test(i,j,dum)='B';
elseif (b(i,j,k)*10+b(i,j,k+1))==10
test(i,j,dum)='C';
else
test(i,j,dum)='D';
end
end
end
end
Please let me know in case of further doubts.
Regards, Pratik

  5 件のコメント

表示 2 件の古いコメント
Abirami
Abirami 2014 年 8 月 14 日
yes sir it is the same...but when i try to run the program it shows two columns and four rows of single binary bits alone and no characters...what i want is to convert the 8bit sequences into 4bit characters.. eg:if 10110001 then i want it as CDAB and it should be done for the entire matrix...thanks in advance....
Pratik Bajaria
Pratik Bajaria 2014 年 8 月 14 日
Ok Let me use altogether new concept to get it done. Used a lot of times in C/C++, the idea of structures.
So use the following code, once you are done executing the above code, I posted and converted them to a 256x256x4 Char Matrix.
for i=1:size(b,1)
for j=1:size(b,2)
test_encode_dummy=test(i,j,1);
for k=2:size(test,3)
test_encode_dummy=cat(2,test_encode_dummy,test(i,j,k));
end
test_encode(i,j).code=test_encode_dummy;
end
end
That's it!
Hope it helps.
Regards, Pratik
Abirami
Abirami 2014 年 8 月 15 日
sir, im not able to follow...i tried but im getting the following error
Attempted to access b(1,1,2); index out of bounds because size(b)=[256,2048,1].
Error in ==> prat1 at 20 if (b(k,l,m)* 10+b(k,l,m+1))==00
also im not able to view the result...pls help..thanks in advance

サインインしてコメントする。

その他の回答 (1 件)

David Sanchez
David Sanchez 2014 年 8 月 14 日
M=randint(256,256,[0,256]);
disp(N)
N=zeros(size(M));
for k=1:256
for l=1:256
N(k,l) = str2double(dec2bin(M(k,l),8));
end
end

  0 件のコメント

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by