MATLAB中字符串的转换和存储
项目为硬件译码IP核设计,所用到的数据输入为二进制,而软件仿真为Matlab仿真,因此存在十进制与二进制转换的问题,由于dec2bin函数产生的是一个 二进制字符串 ,所以无法将其保存至一个普通的矩阵中(data = zeros(m,n);),苦于超出我这个初学者的学习范围,之前用到的都是十进制的数,想要保存可以直接存储在矩阵中,而二进制字符串直接存储会出现 维度不匹配 的问题,所以向师兄请教并解决了问题。
一开始我想把一个8位的 二进制数存储到矩阵中 :
logfna_bits = zeros(n*Q,1);
for x = 1:n
for y = 1:Q
%bits计算过程省略
logfna_bits((x-1)*Q+1) = bits;
end
输出结果为维度不匹配,师兄看了之后说这样肯定不匹配, bits是8位的,矩阵是一位宽的 ,所以提示维度不匹配。
然后我就试图将 矩阵扩展为8位宽的矩阵 :
logfna_bits = zeros(n*Q, 8);
for x = 1:n
for y = 1:Q
%bits计算过程省略
logfna_bits((x-1)*Q+1,:) = bits;%保存字符串
logfna_bits = char(logfna_bits);
在for循环中logfna_bits存储的为一组二进制数的 ASCII形式 ,如49 48 48 48 49 49 49 49对应的是'10001111',因此在for循环结束 使用char将其转换为二进制比特 形式。
关于二进制字符串的存储,硬件输入时为testbench读取txt文件,所以还要将二进制字符串以txt文件进行保存( 貌似打开多个文件时有bug,不在c盘可避免此bug )
fid = fopen ('lianghuabits.txt','w');%初始化量化比特