2017-04-03 99 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