【发布时间】:2016-12-19 19:23:06
【问题描述】:
考虑一个整数数组:
X = [1, 3, 3, 3,2,3 ,1,1,2,3]
我想将每个数字转换为其 4 位二进制等效值。我做了以下,但结果不正确。似乎 MSB 和 LSB 颠倒了。我尝试将 MATLAB 的函数与 decimal_to_bin =dec2bin(X) 一起使用,但即使这个输出也是错误的。
我该如何解决这个问题?
X = [1, 3, 3, 3,2,3 ,1,1,2,3];
b = 4;
lookup_table = generate_lookupTable(b);
BinaryX = lookup_table(X,:);
function result = generate_lookupTable(b)
% generate binary code
k = 2^b;
result = zeros(k,b);
for i=1:k
for j=1:b
result(i,j) = bitand(uint8(2^(j-1)),uint8(i-1))/uint8(2^(j-1));
end
end
end
我得到的输出是BinaryX
0 0 0 0
0 1 0 0
0 1 0 0
0 1 0 0
1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0
1 0 0 0
0 1 0 0
【问题讨论】:
-
如果您查看
dec2bin的文档,您会发现它需要两个参数。如果您将其称为dec2bin(X, 4),则应该会产生所需的结果。 -
您发布的代码无法运行,因此如果您需要帮助使其正常工作,您必须对其进行一些改进
-
@beak:我正在尝试实现查找表,代码旨在生成查找表。但是,查表返回的答案是错误的
-
@Trogdor:我已经修复了代码,它现在应该可以运行了。感谢指出错误
-
那么,正如@Trogdor 所说,为什么不使用
dec2bin创建查找表呢?
标签: matlab binary-data