在Matlab中转换为十进制?

时间:2016-06-01 17:03:07

标签: matlab base

我正在寻求帮助来编写代码,在Matlab中执行以下操作:

(1)我有一个维度为A的列向量nx1,列出 base 4中数字n的逗号后的B位数介于01

之间

我对基数4的含义进行了解释here

实施例

n=18
A=[1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2]' %representing B=0.121212121212121212

(2)我想将B转换为基数10 (十进制表示)并将获得的十进制数C存储在1x1矩阵中

你能帮我理解怎么做吗?

2 个答案:

答案 0 :(得分:5)

这是一种方式:

C = base2dec(char(A(:).'+'0'), 4)*4^-numel(A);

这会将数字转换为基数4中的整数,然后除以4的适当幂。

考虑到C将受double精度限制,因此可能会丢失一些小数。如果你想要更高的精度,你需要使用符号变量。

答案 1 :(得分:2)

我假设你在那里有小数位,以减慢你想要的功率小于1.这是一个强力循环去做。

C = 0;
for x = 1:n
    C = res + A(x) * 4 ^ (-x);
end
C = 0.399999999994179

这是另一种方式

exp = (-1 * (1:18))';
C = sum(A .* 4 .^ exp);
C = 0.399999999994179

使用您的链接作为指南,让我们看一下15的十进制数字。这对应于33的基数4。在这种情况下A = [3 3]exp = [1 0]。这导致:

A = [3 3];
exp = [1 0];
C = sum(A .* 4 .^ exp);
C = 15

您的链接有一个link,用于解释转化的基本知识。