Octave从文件到矩阵加载字符串

时间:2012-06-10 18:40:10

标签: octave

我有一个文件在每一行都有一个单词(字符串)。如何以八度为单位将此文件读入“矩阵”。所以a [1] =“word1”。

非常感谢您的回复。

2 个答案:

答案 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文件)。有关进一步说明,请参阅注释。