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