Clear Filters
Clear Filters

How to load specific files according to vector values?

1 view (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

Community Treasure Hunt

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

Start Hunting!