# Why is my code seemingly ignoring some of the for loop commands?

16 vues (au cours des 30 derniers jours)
Sydney le 12 Mai 2024
Commenté : Voss le 12 Mai 2024
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)
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponse acceptée

Walter Roberson le 12 Mai 2024
function b=mybin2dec(x)
You do not assign anything to b . Your code will error unless you do not assign the result of mybin2dec() to a variable and you supress the default output.
d=(1*(2^n))
You overwrite all of d within each loop iteration. The final d that will be assigned is whatever it is assigned in the last iteration.
Hint:
if x(y)==49
can be written as
if x(y)=='1'
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Sydney le 12 Mai 2024
Thank you so much for your help! Silly oversight on my part, it works now!

Connectez-vous pour commenter.

### Plus de réponses (1)

Voss le 12 Mai 2024
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.
##### 2 commentairesAfficher AucuneMasquer Aucune
Sydney le 12 Mai 2024
Thank you very much! I appreciate your help!!
Voss le 12 Mai 2024
You're welcome!

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by