Effacer les filtres
Effacer les filtres

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

16 vues (au cours des 30 derniers jours)
Sydney
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)

Réponse acceptée

Walter Roberson
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 commentaire
Sydney
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
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 commentaires
Sydney
Sydney le 12 Mai 2024
Thank you very much! I appreciate your help!!
Voss
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