MATLAB Answers

0

Question about sprintf function.

Asked by Portgas Ace on 29 Sep 2012
Here's my syntax:
bm= input ('value');
val = 43 ;
A = sprintf('%d',val);
%if i declare A(1), ans is 4, which is correct.
c=0;
A1 = A(1) .* (bm^(c))
Why is it that if my bm = 8, A1 = 52? its like 4 * 8 = 52. i think my error here is the sprintf function.

  0 Comments

Sign in to comment.

Tags

1 Answer

Answer by Image Analyst
on 29 Sep 2012
 Accepted Answer

Why not just do
A1 = val;
???? bm^c is just 1, and I'm not sure if you really wanted to take the first digit of 43. If you did, you could just do
A1 = floor(A/10); % As long as A is less than 100.
instead of using sprintf. Is A really some sort of ASCII or hexadecimal number?

  6 Comments

Image Analyst
on 29 Sep 2012
Now, your A is letters instead of numbers. So do this:
A = 'ABCDEF'
for k = 1 : length(A)
theNumbers(k) = A(k) - 'A' + 11;
end
% Display:
theNumbers
In command window:
A =
ABCDEF
theNumbers =
11 12 13 14 15 16 17 18 19 10
why is there 17 18 19 10? it should be up to 16 only right? since up to F only?
Image Analyst
on 29 Sep 2012
Yes, you're right. It does really only go to 16. I didn't have a "clearvars" or "clear all" in there so there was left over stuff in theNumbers from prior test runs. This shows one good reason to use clear (though I know Jan doesn't like it) is to avoid goofs like this. Sorry about that.

Sign in to comment.