我有一個二進制行向量,例如如何在Matlab中將二進制行向量轉換爲常規行向量?
B = DEC2BIN(15)
該載體表現不好,當我嘗試相乘逐個分量與 '正常' 向量。如何將b轉換爲法線向量?
更具體地,如果
d = [1 2 3 4]
我想
N = d。* B
給我[1 2 3 4],但它給[49 98 147 196]。
感謝
我有一個二進制行向量,例如如何在Matlab中將二進制行向量轉換爲常規行向量?
B = DEC2BIN(15)
該載體表現不好,當我嘗試相乘逐個分量與 '正常' 向量。如何將b轉換爲法線向量?
更具體地,如果
d = [1 2 3 4]
我想
N = d。* B
給我[1 2 3 4],但它給[49 98 147 196]。
感謝
問題是,dec2bin返回一個字符串,而不是一個數字向量。你必須爲char數組轉換成數字數組,你可以做到這一點與arrayfun,像這樣:
b = dec2bin(15);
b_numeric = arrayfun(@(x) str2num(x), b);
n = d.*b_numeric;
如果有通信系統的工具箱,你已經有一個正是這麼做的功能,在de2bin
你的問題是,dec2bin
返回字符數組。當您通過您的數組進行逐元素相乘d
你獲得通過的字符的ASCII碼乘以d
逐元素的結果「1」,如果您希望通過陣列乘以d
這是49
[1 1 1 1]
這似乎是一個複雜的方法。那麼你真的想做什麼?
要將字符(數組)轉換爲數字,您可以使用str2num
函數。這裏它會將字符串'1111'轉換爲數字1111,因此str2num(dec2bin(15))
返回1111
。
str2num
將工作,但因爲你是保證在每個單元只是一個數字,你可以嘗試
b = dec2bin(15) - 48;
這應該是要快得多。
注意:48是字符「0」的ASCII碼。
比我的努力更好的答案。我仍然認爲這是一個奇怪的方式乘以一個向量1. – 2012-03-24 18:08:00
@HighPerformanceMark:我認爲假設是'b'是可變的,並不總是[1 1 1 1]。 – 2012-03-24 18:13:37
我希望你是對的。 – 2012-03-24 18:19:14