我有一个文件在每一行都有一个单词(字符串)。如何以八度为单位将此文件读入“矩阵”。所以a [1] =“word1”。
非常感谢您的回复。
答案 0 :(得分:2)
您将创建一个Cell Array:
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
答案 1 :(得分:1)
只需使用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(...)
并设置缓冲区长度。请参阅Terence关于如何使用fscanf()
的答案。
textread()
在我的笔记本电脑上在~30秒内读取我的100K条目的4列(2Mb文件)。有关进一步说明,请参阅注释。