如何用matlab绘制浮点系统
How to plot floating point system with matlab
考虑一个以 3 为底、精度为 3 且 -1 <= e <= 1 的标准化浮点系统。
由于手动绘制的点太多,我如何将系统中的所有数字绘制在以 10 为底的实轴上,并且数字可以用 MATLAB 精确表达?谢谢你。
此解决方案还包括 次正常 值。我不确定你是否想包括这些。
close all
figure
hold on
base = 3;
prec = 3;
maxval = base ^ prec - 1;
mantissas = (-maxval: maxval) / (maxval + 1)
for expo = -prec: prec
nums = mantissas * base ^ expo;
plot(nums, 0, 'b.')
end
此外,这可能不符合精确的条件。 MATLAB
最终将所有浮点值转换为二进制。然后,它在具有离散像素位置的屏幕上绘制。我认为没有任何东西可以克服这些限制。
编辑
用10进制测试后,我发现了一个差一错误。 mantissas
应除以 (maxval + 1)
而不是 maxval
。
考虑一个以 3 为底、精度为 3 且 -1 <= e <= 1 的标准化浮点系统。 由于手动绘制的点太多,我如何将系统中的所有数字绘制在以 10 为底的实轴上,并且数字可以用 MATLAB 精确表达?谢谢你。
此解决方案还包括 次正常 值。我不确定你是否想包括这些。
close all
figure
hold on
base = 3;
prec = 3;
maxval = base ^ prec - 1;
mantissas = (-maxval: maxval) / (maxval + 1)
for expo = -prec: prec
nums = mantissas * base ^ expo;
plot(nums, 0, 'b.')
end
此外,这可能不符合精确的条件。 MATLAB
最终将所有浮点值转换为二进制。然后,它在具有离散像素位置的屏幕上绘制。我认为没有任何东西可以克服这些限制。
编辑
用10进制测试后,我发现了一个差一错误。 mantissas
应除以 (maxval + 1)
而不是 maxval
。