-1

MATLAB の 1 つのフォルダーにあるいくつかのテキスト ファイルを読み取り、各ファイルの行数を数え、最終的にこれらの数を合計したいと思います。誰かがMATLABでそれを行う方法を教えてくれたらありがたいです?

4

2 に答える 2

2

Matlab は実際には適していません。基盤となる OS は通常、その点ではるかに優れているため、システム コールを使用します。

この質問からの元の回答を言い換えます(それ以来、いくつかの新しいトリックを学びました:)

if (isunix) %# Linux, mac    
    [~, result] = system('wc -l *');    
    numLines = cellfun(@str2double, regexp(result, '([0-9]+) total', 'tokens'))

elseif (ispc) %# Windows       
    [~, result] = system('find /v /c "&*fake&*" *.*');    
    numLines = sum(str2double( regexp(result, '[0-9]+', 'match') ))

else %# Some smaller OS
    error('Unsupported operating system.');

end

これは正常に動作することに注意してください。

  • Linux/max を使用していて、現在のディレクトリにファイルが呼び出さtotalれている場合:)
  • Windows 版では、一部のファイルが 1 ~ 2 行ずれることがありますが、その理由はわかりません...

Linuxの結果文字列を解析するための、よりクリーンな1行のソリューションがあると確信しています。現在の混乱は、現在のコンテキストにとってかなり不便なセルのセルregexp(..., 'tokens')を返すことによるものです (正直なところ、これ便利なコンテキストはまだあまり見つかりません) 。cellfun

しかし、まあ、ほとんどの状況でうまくいくはずだと考えています。

于 2013-04-19T13:51:43.853 に答える
2

すべてのテキスト ファイル名を取得するには、dir(*.txt) http://www.mathworks.com/help/matlab/ref/dir.htmlを使用します。

すべての行を数えるには、この回答を参照してください: Is there a way in Matlab to determine the number of lines in a file without looping through each line?

于 2013-04-19T12:37:22.713 に答える