2016-09-30 1 views
2

У меня есть вектор-столбец t измерения nx1 в Matlab, который сообщает цифры после запятой числа A в базе d. Я хочу преобразовать его в 1x1, дважды сообщая номер А в базе 10. Меня интересуют случаи d=2 и d=3.Преобразование нецелого числа в базе d в число в базе 10 в Matlab

Пример

%d=3 
t=[0 2 0 2 2 0 0 2 0]'; %that is A=0.020220020 in base 3 
%d=2 
t=[0 1 1 1 0 0 0 1 0]'; %that is A=0.011100010 in base 2 
+0

Спасибо, я не знаю, как бороться с форматами: Я начинаю с т, что является двойной, и я хочу чтобы получить двойной. – user3285148

+0

И base2dec для целых чисел, не так ли? Здесь у меня есть нецелое число – user3285148

ответ

1
A = base2dec(char(t(:).'+'0'), d)/d^numel(t); 

Это работает следующим образом:

  1. Treat цифры, как если бы они были в оставили из десятичного знака, тем самым определяя целое число в основа d. Таким образом, вы можете использовать base2dec для преобразования (обратите внимание, что вход для этой функции должен быть char).
  2. Разделите соответствующую мощность d, чтобы принять во внимание, что цифры на самом деле соответствуют правым десятичной метки.

Например, при

t = [0 2 0 2 2 0 0 2 0]'; 
d = 3; 

результат

A = 
    0.255448864502362