2012-03-24 110 views

回答

0

問題是,dec2bin返回一個字符串,而不是一個數字向量。你必須爲char數組轉換成數字數組,你可以做到這一點與arrayfun,像這樣:

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

如果有通信系統的工具箱,你已經有一個正是這麼做的功能,在de2bin

2

你的問題是,dec2bin返回字符數組。當您通過您的數組進行逐元素相乘d你獲得通過的字符的ASCII碼乘以d逐元素的結果「1」,如果您希望通過陣列乘以d這是49

[1 1 1 1]這似乎是一個複雜的方法。那麼你真的想做什麼?

要將字符(數組)轉換爲數字,您可以使用str2num函數。這裏它會將字符串'1111'轉換爲數字1111,因此str2num(dec2bin(15))返回1111

5

str2num將工作,但因爲你是保證在每個單元只是一個數字,你可以嘗試

b = dec2bin(15) - 48; 

這應該是要快得多。

注意:48是字符「0」的ASCII碼。

+0

比我的努力更好的答案。我仍然認爲這是一個奇怪的方式乘以一個向量1. – 2012-03-24 18:08:00

+0

@HighPerformanceMark:我認爲假設是'b'是可變的,並不總是[1 1 1 1]。 – 2012-03-24 18:13:37

+0

我希望你是對的。 – 2012-03-24 18:19:14

相關問題