MATLAB Answers

Rita
0

How I can select the maximum number in my filename?

Asked by Rita
on 19 Aug 2015
Latest activity Commented on by Rita
on 19 Aug 2015
I really would appreciate if anyone could solve my problem. I have
net1_0.2327.mat
net1_0.3425.mat
net2_0.8765.mat
net2_0.6754.mat ,......to net50_0.87654.mat net50_0.3456.mat
I would like to get these net1_0.3425.mat net2_0.8765.mat ,.... the max of each net1 to net net50(comparing net1 with net1 and net2 with net2 and so on) I used the script
dinfo = dir('net*.mat');
filenames = {dinfo.name};
parts = regexp(filenames, '_', 'split');
part2 = cellfun(@(C) C{2}, parts, 'Uniform',0);
parts3 = regexp(part2, '.mat', 'split');% to remove mat extension
val2 = str2double(parts3)% I get NaN instead of numbers!
Thanks in advance for your help.

  0 Comments

Sign in to comment.

2 Answers

Answer by Walter Roberson
on 19 Aug 2015
 Accepted Answer

dinfo = dir('net*.mat');
filenames = {dinfo.name};
filenumstr = regexprep(filenames, {'^[^_]+_', '\.mat$'}, {'', ''});
val2 = str2double(filenumstr);

  0 Comments

Sign in to comment.


Answer by Morteza
on 19 Aug 2015

Change your code like below:
clc,clear all
dinfo = dir('net*.mat');
filenames = {dinfo.name};
parts = regexp(filenames, '_', 'split');
part2 = cellfun(@(C) C{2}, parts, 'Uniform',0);
parts3 = regexp(part2, '.mat', 'split');% to remove mat extension
for i = 1:length(parts3)
val2(i) = str2double(cell2mat(parts3{1,i}));
end

  1 Comment

Thank you so much Morteza.

Sign in to comment.