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

2 visualizaciones (últimos 30 días)
Sydney el 12 de Mayo de 2024
Comentada: Voss el 12 de Mayo de 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 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Walter Roberson el 12 de Mayo de 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 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Sydney el 12 de Mayo de 2024
Thank you so much for your help! Silly oversight on my part, it works now!

Iniciar sesión para comentar.

### Más respuestas (1)

Voss el 12 de Mayo de 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 comentariosMostrar NingunoOcultar Ninguno
Sydney el 12 de Mayo de 2024
Thank you very much! I appreciate your help!!
Voss el 12 de Mayo de 2024
You're welcome!

Iniciar sesión para comentar.

### Categorías

Más información sobre Get Started with MATLAB en Help Center y File Exchange.

### Community Treasure Hunt

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

Start Hunting!

Translated by