Is there a way to convert binary with Don't care to corresponding decimal values in MATLAB?

7 visualizaciones (últimos 30 días)
Is there a way to express don't care binary in MATLAB and get the decimal value? For example, 011x can be either 6 or 7 since the LSB is a don't care.
An Example Application: Suppose, I have a truth table of 5 variables [ABCDE]. It has 2^5 = 32 states. Now, if I say that I only care about states [ABE] and the rest are don't cares. Then there will be 2^3= 8 states that I care. How do I group those 32 states into 8 states? If I had the don't care decimals I would be done.
  3 comentarios
Nadatimuj
Nadatimuj el 8 de Mzo. de 2022
Thanks. I think you are asking this because approx. 2^N possiibilies will easily blow up. In my application, there can be as many as 250 binary digits. For the example application I have mentioned, I have just written a code:
states = cared_states(5, [1 2 5])
function [grouped_states] = cared_states(number_spins, cared_spin_index)
% Date: 3/8/2022
%% Example Usage: cared_states(5, [2 3])
% number_spins should be the entire spin-state size [care+ don't cares]
% cared_spin_index should be a vector containing indices of the spins whose states you care
% grouped states will have 2^cared_states rows where each row will group
% states from all possible 2^all_states considering don't cares as the same states
%%
x= de2bi(0:2^number_spins-1,'left-msb');
y = de2bi(0:2^length(cared_spin_index)-1,'left-msb');
grouped_states=zeros(length(y),length(x)/length(y));
for i = 1:length(y)
for k = 1:length(cared_spin_index)
x(:,cared_spin_index(k))=y(i,k);
end
grouped_states(i,:) = unique(bi2de(x,'left-msb'));
end
end
Stephen23
Stephen23 el 8 de Mzo. de 2022
"Is there a way to convert binary ... to corresponding decimal values in MATLAB?"
"...there can be as many as 250 binary digits"
There is no inbuilt numeric class that will be able to hold such an integer with its full precision.

Iniciar sesión para comentar.

Respuestas (1)

Jan
Jan el 8 de Mzo. de 2022
You can ectract the wanted bits by bitget such that the ignored bits simply vanish.
  1 comentario
Nadatimuj
Nadatimuj el 8 de Mzo. de 2022
Thanks. I am not sure if I am getting it. bitget gives you the binary values, right? But my problem was opposite, given that a binary string is 1101xxxx, I need all possible 2^4 decimal values.

Iniciar sesión para comentar.

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by