MATLAB:如何从文件加载没有分隔符的数组

Ste*_*fan 2 file-io matlab

到目前为止,我一直在使用load函数将我的空格分隔文件加载到matlab中的数组中.然而,这对我来说浪费了很多空间,因为我的值是0或1.因此,不是像写文件那样

0 1 1 0 
1 1 1 0
Run Code Online (Sandbox Code Playgroud)

我删除了空格来创建一半大文件,如:

0110
1110
Run Code Online (Sandbox Code Playgroud)

但是现在加载不再正常工作(创建一个矩阵,我想只有第一个数字,所以2x1而不是2x4).我用importdata环顾四周,逐行阅读文件和许多其他东西,但我找不到一个明确的解决方案.所以基本上我想从一个没有分隔符的文件中读取矩阵.每个数字都是数组的一个元素

有谁知道干净的方法吗?谢谢

Amr*_*mro 6

这是一种方式:

data.txt中

0110
1110
Run Code Online (Sandbox Code Playgroud)

MATLAB

%# read file lines as cell array of strings
fid = fopen('data.txt','rt');
C = textscan(fid, '%s', 'Delimiter','');
fclose(fid);

%# extract digits
C = cell2mat(cellfun(@(s)s-'0', C{1}, 'Uniform',false));
Run Code Online (Sandbox Code Playgroud)

结果:

C =
     0     1     1     0
     1     1     1     0
Run Code Online (Sandbox Code Playgroud)

如果您真的关心内存,可能会将其转换为布尔值:C = logical(C)因为0/1是可能的值.