math matlab,math – matlab代码中的基本转换错误

我创建了以下简单的matlab函数,将数字从任意基数转换为十进制数

这是第一个

function decNum = base2decimal(vec, base)

decNum = vec(1);

for d = 1:1:length(vec)-1

decNum = decNum*base + vec(d+1);

end

这是另一个

function baseNum = decimal2base(num, base, Vlen)

ii = 1;

if num == 0

baseNum = 0;

end

while num ~= 0

baseNum(ii) = mod(num, base);

num = floor(num./base);

ii = ii+1;

end

baseNum = fliplr(baseNum);

if Vlen>(length(baseNum))

baseNum = [zeros(1,(Vlen)-(length(baseNum))) baseNum ];

end

由于这些函数无法成功转换多大的数量有多大的限制,但在测试它们时我注意到以下错误

我们使用以下测试功能

num = 201;

pCount = 7

x=base2decimal(repmat(num-1, 1, pCount), num)

repmat(num-1, 1, pCount)

y=decimal2base(x, num, 1)

isequal(repmat(num-1, 1, pCount),y)

在base201中具有七(7)位数的假定向量工作正常,但是与base200相同的向量不会返回预期结果,即使它更小并且理论上应该成功转换.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值