How to load specific files according to vector values?

4 views (last 30 days)
I have a vector ii(1:20):
ii(1:20)
ans =
2
5
9
10
11
15
16
17
18
20
1
3
4
6
7
8
12
13
14
19
I want to load files according to the values inside the vector, i.e.: to load file called '2.mat', '5.mat', '9.mat' and so on. But I need only the first 10 values of ii (ii(1:10)) (then I combine them in a struct..but that's not relevant).
So this is what I have so far:
for ii=???
load(sprintf('%d.mat', a));
Struct(n).file=Cycle;
end
So how do I load the first 10 values from the vector?
Thank you all!!

Accepted Answer

Guillaume
Guillaume on 7 Nov 2017
Edited: Guillaume on 7 Nov 2017
First thing, use better variable names. ii is really bad, it does not mean anything and looks like a temporary variable. Let's call it filenumber instead so it's immediately clear what the purpose of the variable is.
filenumber = [2 5 9 10 11 15 16 17 18 20 1 3 4 6 7 8 12 13 14 19];
filestoload = 10;
cycles = struct('Cycle', cell(1, filestoload)); %predeclare structure
for idx = 1:filestoload;
filecontent = load(sprintf('%d.mat, filenumber(idx))); %avoid plain load, always load into a variable
cycles(idx).Cycle = filecontent.Cycle;
end

More Answers (2)

KL
KL on 7 Nov 2017
Something like this?
for k = 1:10
data = load([num2str(ii(k)) '.mat']);
dataStruct(k).file=data.Cycle;
end

KSSV
KSSV on 7 Nov 2017
Let ii be your above vector.
for i = 1:10
filename = strcat(num2str(ii(i)),'.mat')
load(filename);
end

Categories

Find more on App Building in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!