我有一个二进制行向量,例如
b = dec2bin(15)
当我尝试将组件与“正常”向量相乘时,此向量表现不佳。如何将b转换为法线向量?
更具体地说,如果
d = [1 2 3 4]
我想要
n = d。* b
给我[1 2 3 4],但它改为[49 98 147 196]。
由于
答案 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