我有一个看起来像这样的txt文件
a e e a a i
i i a e u i i a
a i e i i i a i
我希望将每一行放在一个单独的向量中(当然,每个字符都放在一个字段中)。线条有不同的长度。使用数字内容似乎很容易。但是我怎么能用一行字符来做呢?
我现在的选择方式是将字符转换为数字并使用dlmread来完成工作。 有更好的想法吗?
感谢。
编辑: 我自己找到了一个解决方案。但是这里的反应似乎更直接。
fname =(['vokale/',si,'.txt']);
disp (['loading ...',fname]);
fid = fopen(fname);
[vowels] = textread(fname, '%c');
s = textscan(fid,'%s','Delimiter','\n');
s = s{1};
b1_cell=textscan(s{1,1}, '%s');
b1=b1_cell{1,1};
b2_cell=textscan(s{2,1}, '%s');
b2=b2_cell{1,1};
b3_cell=textscan(s{3,1}, '%s');
b3=b3_cell{1,1};
b4_cell=textscan(s{4,1}, '%s');
b4=b4_cell{1,1};
b5_cell=textscan(s{5,1}, '%s');
b5=b5_cell{1,1};
答案 0 :(得分:0)
首先,使用textread
获取单元格数组中的行:
C = textread(filename, '%s', 'delimiter', '\n')
然后您可以使用regexp
将每一行拆分为字符:
result = cellfun(@(x)regexp(x, '\w+', 'match'), C, 'Uniform', false)
结果应该是chars的单元格数组的单元格数组:
result =
{'a' 'e' 'e' 'a' 'a' 'i'}
{'i' 'i' 'a' 'e' 'u' 'i' 'i' 'a'}
{'a' 'i' 'e' 'i' 'i' 'i' 'a' 'i'}
或者,如果您只处理以空格分隔的字母(即仅一个字符),则可以将每一行存储为字符串(相当于C中的字符数组)。为此,只需删除空格即可。例如,使用regexprep
:
result = cellfun(@(x)regexprep(x, ' ', ''), C, 'Uniform', false)
result =
'aeeaai'
'iiaeuiia'
'aieiiiai'
例如,要访问第二行中的e
,您可以撰写result{2}(4)
。