2

我正在分析 .txt 文件中的一组文本。该文件有 30 行,每行包含不同的短语,包括文本、数字和符号。

  1. 将此文件导入Matlab进行分析的最佳方法是什么(即:文本文件中有多少大写字母或文件中有多少#text短语(分析每行的推文)
4

2 回答 2

3

我认为您最好逐行阅读文件并将每一行保存在单元格数组的一个单元格中:

fid = fopen(filename);
txtlines = cell(0);
tline = fgetl(fid);
while ischar(tline)
    txtlines{numel(txtlines)+1}=tline;
    tline = fgetl(fid);
end
fclose(fid);

这样您就可以轻松地使用txtlines{ii}.

如果您总是需要对整个文本执行操作(即整个文本文件中有多少个 a,而不是每行),您当然可以将这些行放在一个变量中。

在每一行上执行一个操作,可以简单地用cellfun来完成,例如计算大写字母“I”的数量:

capI_per_line = cellfun(@(str) numel(strfind(str,'I')),txtlines);
于 2012-12-07T00:34:27.957 回答
0

如果文件大小合理(大多数是 30 行文件),我会立即将其全部读入内存。

fid = fopen('saturate.m');
str = fread(fid,inf,'*char')';
fclose(fid);

然后,根据您的需要,您可以对str变量使用基本的矩阵运算、字符串运算或正则表达式样式分析。

例如,“我有多少个大写字母?” 是:

numIs = sum(str=='I'); 

或者,“'someString' 有多少个实例?” 是:

numSomeString = length(strfind(str, 'someString'));
于 2012-12-07T01:54:45.033 回答