我有一个文件,每行都有一个单词(字符串)。如何将这个文件以八度音程读入“矩阵”。这样 a[1] = "word1"。
非常感谢您的回复。
您将创建一个元胞数组:
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
只需使用以下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 条目。请参阅评论以获取更多解释。