Why does dir('*.mat') not list all of the .mat files in directory?

Hello,
I'm trying to create a structure file which lists all of the .mat files in my directory:
files = dir('*.mat')
This code returns a 4x1 structure, but I have 8 .mat files in the directory. All 8 of the .mat files are the same format (i.e. 3 variables per .mat file). Can anyone tell me why my other .mat files are not being listed in the struct file?
Thanks, Dan

 Accepted Answer

Are you sure about those files being in there? Does WHAT see them (type: what) in there?
D = dir;
length(regexp([D(:).name],'\.mat')) % What does this say

6 Comments

length(regexp([D.name],'\.mat')) % w:hy D(:)?
Matt,
The "what" command shows the names of all 8 files.
D = dir;
length(regexp([D(:).name],'\.mat')) % What does this say
This code gives an answer of 8. I tried files = dir('*.mat') several times and still only get 4 files listed.
Thanks, Dan
Azzi, No reason. Just my mental notation... ;-)
I have no idea why this DIR isn't finding your files. Since WHAT is, why not just take:
W = what(pwd);
files = W.mat
Matt, your example above works just fine...now its just bugging me why DIR isn't working.
Thanks!

Sign in to comment.

More Answers (1)

try this
d=dir
d1=struct2cell(d);
d2=d1(1,:);
d3=cellfun(@(x) regexp(x,'.mat'),d2,'uni',false)
d4=find(~cellfun('isempty', d3))
files=d2(d4)'

3 Comments

Azzi, your work almost works for me, but 'files' then contains one .png that is in my directory.
~cellfun('isempty', d3) is faster than ~cellfun(@isempty, d3), which is faster than cellfun(@(x) ~isempty(x)).
thanks Simon, did'nt read your comment until now.

Sign in to comment.

Categories

Tags

Asked:

Dan
on 21 Aug 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!