【发布时间】:2021-05-21 23:06:54
【问题描述】:
我有这些十进制值:
x1=-43.00488
x4=11.5048
y1=-11.5048
y4=-43.004
我将它们转换为相等的二进制值,格式为 Q7.10
所以,这些是二进制值:
% 所有的二进制值都是有符号的,并且是 Q7.10 格式。
x1=1010100_1111111011
x4=0001011_1000000101
y1=1110100_0111111011
y4=1010100_1111111011
我想在 matlab 中用二进制值做这个操作:
% 这一行等于将“((x1-x4) / (y1-y4))”乘以2^10;
x1x4_div_y1y4 = ((x1-x4) / (y1-y4)) << 10
在尝试执行此操作时,我遇到了一些困难,
首先,我无法在 Matlab 中声明负二进制值。 其次,我们是否允许对二进制值进行数学运算,还是应该对十进制值进行运算然后将它们转换为二进制值?
但是我需要用二进制操作来做这个操作,这样我就可以在verilog hdl中实现它。
a= ((-43.00488-11.5048) / (-11.5048+43.00488))*(2^10)
a =
-1.7720e+03
我不确定这些陈述是否得到了真正的答案。我应该将它乘以 2^10 左右吗...
我想用二进制值做同样的操作。我可以在 Matlab 中做到这一点吗?以及如何做到这一点?
提前谢谢你。
【问题讨论】:
-
第一步看起来不对劲。在二进制中,
x1是一个负数,但在十进制中它写为正数43.00488。 -
另外,这部分不是有效的 MATLAB 代码:
// << 2^10。你的意思是这是评论吗?如果是这样,请使用%开始评论。另外,如果你想说“左移 10 位”,那么应该是<< 10而不是<< 2^10。 -
@Harry 我修好了。
-
@harry 是的,我的意思是作为评论。应该是“%”对不起。你是如何在 cmets 中制作 x1 和 43.00488 灰色的背景的?我可以学吗?
-
你可以像这样使用`:`hello`会这样显示:
hello。
标签: matlab math binary fixed-point