Matlab中的数字系统转换

时间:2015-03-28 11:20:40

标签: matlab numbers system

我为MatLab编写了以下程序,它将十进制系统中的数字转换为基数为2(二进制)到16(十六进制)的其他系统。当程序从基数10开始转换为系统时,我遇到了问题。在这种情况下,必须以某种方式编写余数,例如10=A11=B等等。怎么可能成功呢?我应该为此目的使用开关盒吗?谢谢!

clc
clear all
dec = input('dec=');
n = input('select number system n=');
if n>=2 && n<=16
    i = 0;
    p=dec;
    while p>0
        dec=p;
        i = i + 1;
        p = fix(dec/n);
        r = mod(dec, n);
        base(i) = num2str(r);
    end
    base = fliplr(base);
    disp(['base=' num2str(base)]);
else
    disp('error');
end

1 个答案:

答案 0 :(得分:1)

此函数作为内置dec2base存在。如果您通过

查看其源代码
edit dec2base

您将看到此函数首先构建数字向量,然后使用它来索引字符数组symbols = '0123456789ABCDEFG...'。您可以使用相同的方法而不是num2strbase(i) = symbols(r+1)应该这样做。

BTW:

  • disp行中,您对已经是字符串的内容使用num2str
  • 您可以通过disp('error')实际生成错误消息,而不是使用error('Choose base b as 2<=b<=16')
  • 而不是base(i)您可以使用base(end+1) = ...删除变量i