Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中将十进制转换为IEEE双精度浮点二进制?_Matlab_Verilog - Fatal编程技术网

如何在Matlab中将十进制转换为IEEE双精度浮点二进制?

如何在Matlab中将十进制转换为IEEE双精度浮点二进制?,matlab,verilog,Matlab,Verilog,我正在尝试生成一个用于FPGA合成的MIF文件,我正在用Matlab编程 我希望IEEE标准双精度浮点中的数字范围为-1到1(-9,-.8,-.7…1),这样我就可以将其写入MIF文件,在Verilog中使用。有什么Matlab函数可以简单地实现这一点吗?提前谢谢你的建议 试试这个: oldFormat = get(0,'Format'); format('hex'); display( -1:0.1:1 ); format(oldFormat); 只有中间路线是重要的。另外两个只是将您的格式

我正在尝试生成一个用于FPGA合成的MIF文件,我正在用Matlab编程

我希望IEEE标准双精度浮点中的数字范围为-1到1(-9,-.8,-.7…1),这样我就可以将其写入MIF文件,在Verilog中使用。有什么Matlab函数可以简单地实现这一点吗?提前谢谢你的建议

试试这个:

oldFormat = get(0,'Format');
format('hex'); display( -1:0.1:1 );
format(oldFormat);
只有中间路线是重要的。另外两个只是将您的格式恢复到以前的格式(默认情况下为“short”)。我不确定输出是否符合IEEE,但我怀疑它会。根据这将显示一个“十六进制表示的二进制双精度数字”

如果您想将它们保存为字符串,您可以稍后使用sprintf格式打印
%bx

x = -1:0.1:1;
for i = 1:length(x)
    vals{i,1} = x(i);
    vals{i,2} = sprintf('%bx',x(i));
    vals{i,3} = dec2bin(hex2dec(sprintf('%bx',x(i))),64);
end
display(vals(:,[1 2]));
display(vals(:,3));
试试这个:

oldFormat = get(0,'Format');
format('hex'); display( -1:0.1:1 );
format(oldFormat);
只有中间路线是重要的。另外两个只是将您的格式恢复到以前的格式(默认情况下为“short”)。我不确定输出是否符合IEEE,但我怀疑它会。根据这将显示一个“十六进制表示的二进制双精度数字”

如果您想将它们保存为字符串,您可以稍后使用sprintf格式打印
%bx

x = -1:0.1:1;
for i = 1:length(x)
    vals{i,1} = x(i);
    vals{i,2} = sprintf('%bx',x(i));
    vals{i,3} = dec2bin(hex2dec(sprintf('%bx',x(i))),64);
end
display(vals(:,[1 2]));
display(vals(:,3));
试试这个:

oldFormat = get(0,'Format');
format('hex'); display( -1:0.1:1 );
format(oldFormat);
只有中间路线是重要的。另外两个只是将您的格式恢复到以前的格式(默认情况下为“short”)。我不确定输出是否符合IEEE,但我怀疑它会。根据这将显示一个“十六进制表示的二进制双精度数字”

如果您想将它们保存为字符串,您可以稍后使用sprintf格式打印
%bx

x = -1:0.1:1;
for i = 1:length(x)
    vals{i,1} = x(i);
    vals{i,2} = sprintf('%bx',x(i));
    vals{i,3} = dec2bin(hex2dec(sprintf('%bx',x(i))),64);
end
display(vals(:,[1 2]));
display(vals(:,3));
试试这个:

oldFormat = get(0,'Format');
format('hex'); display( -1:0.1:1 );
format(oldFormat);
只有中间路线是重要的。另外两个只是将您的格式恢复到以前的格式(默认情况下为“short”)。我不确定输出是否符合IEEE,但我怀疑它会。根据这将显示一个“十六进制表示的二进制双精度数字”

如果您想将它们保存为字符串,您可以稍后使用sprintf格式打印
%bx

x = -1:0.1:1;
for i = 1:length(x)
    vals{i,1} = x(i);
    vals{i,2} = sprintf('%bx',x(i));
    vals{i,3} = dec2bin(hex2dec(sprintf('%bx',x(i))),64);
end
display(vals(:,[1 2]));
display(vals(:,3));

谢谢这将生成16位十六进制数,但在我的verilog乘法器模块中,是否可以将16位十六进制数与64位二进制数相乘?我对这个有点陌生。只要你的verilog编译器接受它。无论哪种方式,数字都以位的形式存储在系统中,因此处理器、FPGA等中的所有操作都以二进制形式进行。唯一的问题是确保您的编译器知道您给它的是一个双精度数,而不是一个整数,但这很可能是以它接受双精度二进制数的相同方式完成的。我添加了一个更新,如果您想这样做,它会将它们转换为二进制。谢谢。这将生成16位十六进制数,但在我的verilog乘法器模块中,是否可以将16位十六进制数与64位二进制数相乘?我对这个有点陌生。只要你的verilog编译器接受它。无论哪种方式,数字都以位的形式存储在系统中,因此处理器、FPGA等中的所有操作都以二进制形式进行。唯一的问题是确保您的编译器知道您给它的是一个双精度数,而不是一个整数,但这很可能是以它接受双精度二进制数的相同方式完成的。我添加了一个更新,如果您想这样做,它会将它们转换为二进制。谢谢。这将生成16位十六进制数,但在我的verilog乘法器模块中,是否可以将16位十六进制数与64位二进制数相乘?我对这个有点陌生。只要你的verilog编译器接受它。无论哪种方式,数字都以位的形式存储在系统中,因此处理器、FPGA等中的所有操作都以二进制形式进行。唯一的问题是确保您的编译器知道您给它的是一个双精度数,而不是一个整数,但这很可能是以它接受双精度二进制数的相同方式完成的。我添加了一个更新,如果您想这样做,它会将它们转换为二进制。谢谢。这将生成16位十六进制数,但在我的verilog乘法器模块中,是否可以将16位十六进制数与64位二进制数相乘?我对这个有点陌生。只要你的verilog编译器接受它。无论哪种方式,数字都以位的形式存储在系统中,因此处理器、FPGA等中的所有操作都以二进制形式进行。唯一的问题是确保您的编译器知道您给它的是一个比整数更高的双精度数,但这很可能是以它接受双精度二进制数的相同方式完成的。我添加了一个更新,如果您想这样做,它会将它们转换为二进制。