自定义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功能模块——串行数据转并行