使用Matlab查找最小数量的相等MSB

时间:2017-04-25 08:17:25

标签: matlab bit

我使用ADC执行测量(相同电压)以找出真实/无噪声分辨率。无噪声分辨率是在测量的所有采样代码中稳定的最高有效位的最小数量。 测量值保存为二进制代码,以便在视觉检测中更加明显。

实施例: 假设示例代码是

010111 01101

010111 01110

010111 10001

010111 01100

然后真正的分辨率为6位(用粗体标记的相等MSB)。如何使用Matlab找到它们的编号?

1 个答案:

答案 0 :(得分:1)

假设您在十进制形式的向量中包含值,例如通过使用以下内容转换问题中的二进制数字:

>> vals = bin2dec({ '01011101101'; ...
                    '01011101110'; ...
                    '01011110001'; ...
                    '01011101100'})

vals =

   749
   750
   753
   748

相当于:

vals = [749; 750; 753; 748]

然后您可以使用此代码计算n长度二进制数的MSB数量:

>> n=11;
>> MSBs = sum(~any(diff(dec2bin(vals,n))))

MSBs =

     6

<强>描述

dec2bin转换为char数组,每行都有一个数字

diff找到连续数字之间的二进制数字(列)的差异

any询问是否有任何包含某些差异的列

~改变上一个问题是否存在任何不含差异的列

sum计算没有差异的列数(位数)