How to convert a matrix having integer entries (+ or -) into binary ?

1 visualización (últimos 30 días)
Abdul Gaffar
Abdul Gaffar el 27 de Abr. de 2018
Comentada: Abdul Gaffar el 28 de Abr. de 2018
i have code,
a = -123; % your float point number
n = 16; % number bits for integer part of your number
m = 0; % number bits for fraction part of your number
% binary number
d2b = fix(rem(a*pow2(-(n-1):m),2));
% the inverse transformation
b2d = d2b*pow2(n-1:-1:-m).';
sir, this code converts floating point no. (+ or -) to binary. If i have a matrix say A=[1,2,3;-1,-2,5;-5,6,-23], then how to do the same ??

Respuestas (1)

Ameer Hamza
Ameer Hamza el 28 de Abr. de 2018
This code will work for a matrix A
% for transformation
powers = reshape(pow2(-(n-1):m), 1, 1, []);
d2b = fix(rem(a.*powers, 2));
% for inverse transformation
powerReverse = reshape(pow2(n-1:-1:-m), 1, 1, []);
b2d = sum(d2b.*powerReverse, 3);
d2b is 3D matrix. To extract transformation value corresponding to a(i, j) from d2b use squeeze(d2b(i,j,:)).
  5 comentarios
Ameer Hamza
Ameer Hamza el 28 de Abr. de 2018
I question you just mentioned a 2D matrix A. It seems that you are reading an RGB image. A color image have 3 dimensions. You first need to use rgb2gray() to convert it to a 2D grayscale image. Try this
a=imread('lena.png');
a = rgb2gray(a);
a = double(a);
Abdul Gaffar
Abdul Gaffar el 28 de Abr. de 2018
Error using .* Integers can only be combined with integers of the same class, or scalar doubles. Error in dec2bin_mat (line 4) d2b = fix(rem(a.*powers, 2));

Iniciar sesión para comentar.

Categorías

Más información sobre Convert Image Type en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by