自定义Matlab功能函数——10进制整数矩阵转二进制字符矩阵
生活随笔
收集整理的这篇文章主要介绍了
自定义Matlab功能函数——10进制整数矩阵转二进制字符矩阵
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
不同版本matlab的m语言语法会略有不同,这里使用的版本为Matlab 2021a。
一. 10进制整数矩阵转二进制字符矩阵
因为FPGA只能识别二进制,所以在做Verilog仿真时经常需要matlab生成有符号二进制的txt文件,涉及到进制转换,故编写此函数。
注意,函数内部加入了输入判断,输入不合法会报eroor。
A = [-64, -512, 9; -128, 5, 1; 3, 12, -19] bit_width = 10myDec2Bin(A, bit_width)function yout_signed_bin_str = myDec2Bin(xin_int, bit_width)%{* description:输入十进制整数矩阵,得到指定位数的二进制补码字符矩阵,整数数值满足范围:-(2^(bit_width - 1))~2^(bit_width - 1) - 1* @param xin_int 十进制数矩阵* @param bit_width 二进制位数* return yout_signed_bin_str 有符号的指定位数的二进制字符矩阵%}% 判断输入参数是否合法for i = 1:numel(xin_int)if fix(xin_int(i)) ~= xin_int(i) % 输入应是整数error('Error!, xin_int %d should be int, but there is %s', i, class(xin_int(i)));% 输入不能超过有符号bit_width的范围elseif xin_int(i) < -(2^(bit_width - 1)) || xin_int(i) > 2^(bit_width -1) - 1error('Error!, xin_int %d should be in %d ~ %d, but it is %d', ...i, -(2^(bit_width - 1)), 2^(bit_width -1) - 1, xin_int(i));endendyout_signed_bin_str = strings(size(xin_int)); % 创造一个与输入格式相同的字符串数组for i = 1:numel(xin_int) % numel(A)表示矩阵A元素个数yout_signed_bin_str(i) = dec2bin(xin_int(i) + (xin_int(i) < 0) * 2^bit_width, bit_width);if xin_int(i) < 0yout_signed_bin_str(i) = dec2bin((2^bit_width + xin_int(i)), bit_width);elseyout_signed_bin_str(i) = dec2bin(xin_int(i), bit_width);endendendTo be continued…
总结
以上是生活随笔为你收集整理的自定义Matlab功能函数——10进制整数矩阵转二进制字符矩阵的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Vscode解决Setting.json
- 下一篇: Verilog功能模块——串行数据转并行