Matlab导入二进制作为矩阵

时间:2015-03-03 19:46:53

标签: matlab

我有一个包含如下数据的.txt文件:

0000000011111000
0000001110001110
0000011000011111
0001110000000001
0011000000000001
0011000000000001
0110000000000001
0100000000000001
1100000000000001
1100000000000001
1000000000000001
1100000000000010
1100000000000110
0100000000001100
0110000000011000
0011111111110000
0
//repeats like this

最后的0是一个标签,用于描述0和1的16x16矩阵。如您所见,它实际上是0的二进制图像。

我需要将此文件作为16x16矩阵加载。我尝试了importdatatextscanfscanf,但没有一个适合我。

该文件以此格式继续。

我最初的尝试是使用''作为importdata的分隔符,但这没有用。 有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

这是阅读文件的一种方法(有关文档,请参阅here):

fid=fopen(textfile);
dat = textscan(fid,'%s',-1);   % <-- read into cell array of strings
fclose(fid);

dat=char(dat);    % <-- concatenate the strings into one char array
dat = double(dat)- '0'; % <-- convert to numeric 0/1 (48 = '0'+0)

最后一行将包含所代表的数字(&#34; 0&#34;)和多余的内容,您可以删除例如dat(end,:)=[];
快乐的小路!


编辑:虽然发布的答案适用于我使用的输入文本文件和输入法,但对于OP,代码需要修改(可能是由于输入格式不同):

i = 1 : length (dat{1,1}) 
   result(i,:) = double(char(dat{1,1}{i,1})) - '0';
end