如何在Matlab中将二进制行向量转换为普通行向量?

时间:2012-03-24 17:19:33

标签: matlab

我有一个二进制行向量,例如

  

b = dec2bin(15)

当我尝试将组件与“正常”向量相乘时,此向量表现不佳。如何将b转换为法线向量?

更具体地说,如果

  

d = [1 2 3 4]

我想要

  

n = d。* b

给我[1 2 3 4],但它改为[49 98 147 196]。

由于

3 个答案:

答案 0 :(得分:5)

str2num可以使用,但由于每个单元格中只保证一个数字,您可以尝试

b = dec2bin(15) - 48;

应该快得多。

注意:48是字符“0”的ASCII码。

答案 1 :(得分:2)

您遇到的问题是dec2bin会返回一个字符数组。当你通过数组d执行逐元素乘法时,你会得到d元素乘以字符'1'的ASCII码的结果,即49.

如果您想将d乘以数组[1 1 1 1],这似乎是一种错综复杂的方法。那么你真正想做什么?

要将字符(数组)转换为数字,您可以使用str2num函数。在这里,它会将字符串'1111'转换为数字1111,因此str2num(dec2bin(15))会返回1111

答案 2 :(得分:0)

问题是dec2bin返回字符串,而不是数字向量。你必须将char数组转换为数字数组,你可以使用 arrayfun 来实现,如下所示:

b = dec2bin(15);
b_numeric = arrayfun(@(x) str2num(x), b);
n = d.*b_numeric;

如果你有通讯系统工具箱,那么你已经有了一个完全符合要求的功能,de2bin