到目前为止,我一直在使用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环顾四周,逐行阅读文件和许多其他东西,但我找不到一个明确的解决方案.所以基本上我想从一个没有分隔符的文件中读取矩阵.每个数字都是数组的一个元素
有谁知道干净的方法吗?谢谢
这是一种方式:
0110
1110
Run Code Online (Sandbox Code Playgroud)
%# 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是可能的值.