2

我有一个看起来像这样的 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};
4

1 回答 1

0

首先,使用以下方法获取元胞数组中的行textread

C = textread(filename, '%s', 'delimiter', '\n')

然后您可以使用regexp将每一行拆分为字符:

result = cellfun(@(x)regexp(x, '\w+', 'match'), C, 'Uniform', false)

结果应该是字符元胞数组的元胞数组:

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).

于 2013-01-14T16:39:04.900 回答