2017-04-03 101 views
-1

我需要使用matlab對輸入信號進行量化和編碼,因此我將使用uencode函數。問題是,我感到困惑的過程,描述說,它量化和編碼輸入爲整數,然後他顯示一個例子:uencode -signal processing matlab

u = -1:0.01:1; 
y = uencode(u,3); 
plot(u,y,'.') 

輸出僅僅是整數,有人可以只解釋這是什麼整數正好是?如果我需要輸入的二進制代碼,我必須做些什麼才能得到它們?

回答

1

uencode取-1.0到1.0之間的浮點數的範圍,並將其映射到從0到(2^n)-1的整數。

例如,對於n = 8,可能的整數是0到255. -1.0被映射到0,+1.0被映射到255,並且其間的所有十進制值被映射到最接近的整數。

在您給出的代碼示例中,n = 3,因此它映射到0到7的整數。該圖顯示水平線,因爲可用於映射的整數很少,許多浮點值映射到相同的整數。

要將基本10整數轉換爲基本2二進制字符串,請使用函數dec2bin

>> dec2bin(5) 

ans = 

101 

>> dec2bin(17) 

ans = 

10001 

如果你想前置零,所以說,他們總是8位長,用最小的長度作爲第二個參數:

>> dec2bin(5, 8) 

ans = 

00000101 
+0

謝謝保羅! – ahmed

+0

你能幫我解決這個問題:>> x = [0.001,0.5,0.4]; >> Y = uencode(X,(8000分之100000)),使用uencode 錯誤> uencodeParseParams(線76) 輸出位的個數必須是從2到32 在uencode誤差(第30行) 的整數。 u,Nbits,V,isUnsigned] = uencodeParseParams(varargin {:}); 有什麼不對? – ahmed