Why is my code seemingly ignoring some of the for loop commands?
Afficher commentaires plus anciens
Hello, I'm new to MATLAB and I'm trying to create a user-defined function that acts like bin2dec using manual conversion of binary to decimal integer, but I can't figure out why I'm getting outputs of "1" or no output value for x altogether. Can someone please help me understand what's wrong with my code? Thank you!!
% mybin2dec takes one single valued text input argument representation of a binary number and converts it to a decimal integer
function b=mybin2dec(x)
x=input('Enter a binary number as a text input: ', 's')
str2num(x)
n=length(x)-1
for y=[1:length(x)]
if x(y)==49
d=(1*(2^n))
n=n-1
elseif x(y)==48
d=(0*(2^n))
n=n-1
end
end
sum(d)
Réponse acceptée
Plus de réponses (1)
Voss
le 12 Mai 2024
1 vote
d is computed anew on each iteration of the for loop; thus after it's done the result you see is the last d that was computed, either 0 or 1. You should be adding each d to the sum of all the previous d's that were already calculated.
I see you have sum(d) at the end, but as d is a scalar, that doesn't really do anything. I guess that means that d is intended to be a vector the same length as x, in which case you should be storing d(y) instead of d inside the loop when you calculate it.
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!