0

如果可能,请告诉我如何在 Matlab 中读取不同的文本文件。考虑到每个人都应该处理 33 个 txt 文件。这是我的代码有错误。:(

 textFilename = cell(1,33);
        id = cell(1,33);
        for k=1:33;
        textFilename{k} = fullfile('C:\Users\Desktop\SentimentCode\textfiles',['file' num2str(k)     '.txt']);
        id{k} = fopen(textFilename{k},'rt'); 
        str{k} = textscan(id{k},'%s%s'); 

    end                                                      
    str(str == '.') = '';
    str(str == '_') = '';
    str(str == '-') = '';


% Remove numbers from text
    T =regexprep(str, '[\d]', ' ');                                  

  and my error is :   ??? Undefined function or method 'eq' for input arguments of type 'cell'.

Error in ==> Untitled9 at 23
str(str == '.') = '';
4

2 回答 2

0

只需查看示例代码:

extFilename{k} = fullfile(..); 

应该

textFilename{k} = fullfile(...);

阅读文件后关闭文件也是个好主意:fclose(id{k})

于 2014-05-31T01:28:45.713 回答
0

在您当前的编辑中,您的错误似乎更倾向于删除 . - 和 _ 字符。== 比较适用于字符串,而 textscan 返回一个单元格

代替

str(str == '.') = '';
str(str == '_') = '';
str(str == '-') = '';

尝试使用

regexprep(str,'(\.|-|_)','')

一次全部替换(需要“\.”,因为“.”是一个特殊字符)。这适用于单元格字符串,因此取决于您的单元格结构的深度,您可能需要在 for 循环、str{k}、str{k}{1}、str{k}{i} 等中调用它......另一种选择可能是查看cellfun 或/和strjoin ...取决于您的数据在文件中的排列方式。

于 2014-06-01T09:14:25.617 回答