Effacer les filtres
Effacer les filtres

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

4 vues (au cours des 30 derniers jours)
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 commentaires
Nadatimuj
Nadatimuj le 8 Mar 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 le 8 Mar 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.

Connectez-vous pour commenter.

Réponses (1)

Jan
Jan le 8 Mar 2022
You can ectract the wanted bits by bitget such that the ignored bits simply vanish.
  1 commentaire
Nadatimuj
Nadatimuj le 8 Mar 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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by