私はその最初の行に「もう少し愛を」と約束しました...「うまくいかなかったもの」。ここにあります。
この回答をもう少し調査するまで知らなかったセル配列を操作する興味深い方法がいくつかあります...特に、cellfun()
. 私が学んだことを共有します。
たとえば、ファイル名のセル配列がある場合
fnames = {files.name};
正規表現を適用して、特定の基準に一致するファイルを見つけることができます (例: 「ドットで始まらない」)
crit = '^[^.]+';
% return cell array of results, [] if no match
rxResult = regexp( fnames, crit );
% loop over all cells, set true if regex matched
nodot = (cellfun('isempty', rxResult)==0);
% The `nodot` array is a logical array telling us which are "good" files.
totalGoodFiles = sum(nodot);
今、あなたは使用することができます
fileidx = find(~[files.isdir] & nodot);
一方、for
すでにループを使用しているため、そこにテストを入れることができます(ファイル数を含めるように編集されています):
fCount=0;
for i = 1:length(fileidx)
if( files(fileidx(i)).name(1) ~= '.')
filename = [dirname, '/', files(fileidx(i)).name];
fCount = fCount+ 1;
fid = fopen(filename, 'r');
end
end
余談ですが、fullfile()
ディレクトリとファイル名を連結するために使用できる関数があります。オペレーティング システムで使用する正しいファイル セパレータを認識します。非常に便利 - '/' を連結するよりも優れています。Macで実行しようとすると失敗します...
さらに余談ですが、組み込みの定数filesep
は、プラットフォームで使用する正しいファイル パス セパレータを返します。コードを移植可能にするのに適しています。