如何在MATLAB中将整数矩阵转换为无符号二进制值矩阵?
MATLAB整数矩阵转8位二进制字符串矩阵的解决方法
你遇到的问题是因为int2bit函数的设计目的是提取整数的每一位作为单独的数值元素,所以100×100的矩阵会被拆分为800×100的矩阵(每个整数的8位分别占据一行)。要得到每个元素对应8位二进制字符串的矩阵,可以用以下几种方法:
方法1:使用arrayfun结合string类型
% 假设I是你的100×100正整数矩阵 matBin = string(arrayfun(@(x) dec2bin(x, 8), I, 'UniformOutput', false));
dec2bin(x,8)将单个整数x转换为8位二进制字符串,自动补前导零arrayfun对矩阵I的每个元素应用该函数,UniformOutput设为false生成字符串数组string将结果转换为100×100的字符串矩阵,每个元素为8位二进制串
验证示例:当I = [1,2;1,2]时,matBin的输出为:
"00000001" "00000010" "00000001" "00000010"
方法2:向量化处理(效率更高)
如果矩阵规模较大,向量化操作比arrayfun更高效:
vec = I(:); % 将矩阵转为列向量 binStrs = dec2bin(vec, 8); % 批量转换为8位二进制字符串 matBin = reshape(string(binStrs), size(I)); % 重塑为原矩阵大小的字符串矩阵
方法3:生成cell数组
如果需要每个元素为独立的char字符串,可以用cell数组:
matBin = arrayfun(@(x) dec2bin(x, 8), I, 'UniformOutput', false);
得到的是100×100的cell数组,每个cell存储一个8位二进制字符串。
内容的提问来源于stack exchange,提问作者AlexandrosS
相关产品推荐
相关产品推荐

