String 二进制到十六进制转换为Matlab中的文件

String 二进制到十六进制转换为Matlab中的文件,string,matlab,vector,String,Matlab,Vector,我有一个二进制向量,我把它转换成十六进制。我希望这个十六进制数据进入一个.bin(或任何其他fornat)文件。因为这是一个向量,所以我尝试先将其转换为字符串,以便格式化十六进制数据,然后将其输出到文件中。请看下面我试图使用的代码。还显示了问题的快照。如您所见,所有转换的十六进制数据都存在于1个单元格中。我希望每个单元格都是按字节的 my_new_vector = binaryVectorToHex(M); %M is my input binary matrix %cellfun(Form

我有一个二进制向量,我把它转换成十六进制。我希望这个十六进制数据进入一个.bin(或任何其他fornat)文件。因为这是一个向量,所以我尝试先将其转换为字符串,以便格式化十六进制数据,然后将其输出到文件中。请看下面我试图使用的代码。还显示了问题的快照。如您所见,所有转换的十六进制数据都存在于1个单元格中。我希望每个单元格都是按字节的

my_new_vector = binaryVectorToHex(M);  %M is my input binary matrix 
%cellfun(FormatHexStr, mat2cell(my_new_vector), 'UniformOutput', false)
%new_vector = mat2cell(my_new_vector);  
vect2str(my_new_vector);  %[matlab file exchange function][2] for converting vector to string
FormatHexStr(my_new_vector,2);    %FormatHexStr is a function for formatting hex values which requires a hex string as an input [function is here][3]
[n_rows,n_cols] = size(my_new_vector);
fileID = fopen('my_flipped_data.bin','wt');
for row = 1:n_cols
fprintf(fileID,'%d\n',my_new_vector(:,row));
end
fclose(fileID);

将二进制值转换为uint8(字节)变量中的8块,然后将其写入文件

nbytes = floor(length(M)/8);
bytevec = zeros(1,nbytes, 'uint8');
for i = 1:8
  bytevec = bytevec + uint8((2^(8-i))*M(i:8:end));
end
fileID = fopen('my_flipped_data.bin','wb');
fwrite(fileID, bytevec);
fclose(fileID);
这会将第一位作为第一个字节的MSB写入。第一位使用(2^(i-1))作为LSB。

继续获取此错误“下标索引必须是实正整数或逻辑数”。矩阵M仅包含1和0。