3

我有一个文件,每行都有一个单词(字符串)。如何将这个文件以八度音程读入“矩阵”。这样 a[1] = "word1"。

非常感谢您的回复。

4

2 回答 2

3

您将创建一个元胞数组:

input_file = fopen('vocab.txt');
number_of_lines = fskipl(input_file, Inf);
frewind(input_file);
cells = cell(number_of_lines, 1);
for i = 1:number_of_lines
    cells{i} = fscanf(input_file, '%s', 1);
end
于 2012-06-17T19:17:54.400 回答
3

只需使用以下textread (filepath, format)功能:

column1 = textread('/path/to/file', '%s');    # Where '%s' indicates how to read the values of your file: one string per index.

for i = 1:rows(column1)
    word = column1{ i };

    %do your thing...
end

column1是一个元胞数组。这就是为什么我们使用{}它来访问它。


注意:如果每行包含 2 个由空格分隔的单词,您可以调用:

[column1, column2] = textread('/path/to/file', '%s %s');

性能textread()是一个基于fscanf. 如果您确实需要文件输入的性能,那么您可能更愿意学习如何正确使用fscanf(...)和设置缓冲区长度。请参阅特伦斯关于如何使用的回答fscanf()
textread()在我的笔记本电脑上大约 30 秒内读取我的 4 列(一个 2Mb 文件)的 100K 条目。请参阅评论以获取更多解释。

于 2015-11-25T16:24:37.170 回答