我使用ADC执行测量(相同电压)以找出真实/无噪声分辨率。无噪声分辨率是在测量的所有采样代码中稳定的最高有效位的最小数量。 测量值保存为二进制代码,以便在视觉检测中更加明显。
实施例: 假设示例代码是
010111 01101
010111 01110
010111 10001
010111 01100
然后真正的分辨率为6位(用粗体标记的相等MSB)。如何使用Matlab找到它们的编号?
答案 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
计算没有差异的列数(位数)