MATLAB Answers

# How to create a structure of matrices within a loop

19 views (last 30 days)
Dear all,
Using the following code, I would like to create a structure containing 3 matrices that are the result of a loop. I want these matrices to be named within this structure, e.g. 'A', 'B' and 'C'. What should I improve in my code?
for s0 = 1:3
matrixOfCodes = cell(size(matrixOfNames,2), length(codePart1));
for s1 = 1:size(matrixOfNames,2)
for s2 = 1:length(codePart1)
fullPath = strcat(codePart1{s2}, matrixOfNames{s0,s1}, codePart2{s2});
matrixOfCodes{s1, s2} = fullPath;
end
end
m{s0} = matrixOfCodes;
matrixOfCodes = [];
end
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

Stephen Cobeldick on 2 Mar 2021
Edited: Stephen Cobeldick on 2 Mar 2021
C = {'A','B','C'};
S = struct();
for k = 1:numel(C)
S.(C{k}) = whatever
end
Note that accessing data like this may be less convenient than simply using the existing arrays and indexing.
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### More Answers (1)

Joanna Przeworska on 2 Mar 2021
Dear Stephen,
Thank you for your response, however when I implement your idea I get an error: 'Argument to dynamic structure reference must evaluate to a valid field name'. My code now look like the one below:
database = {'A','B','C'};
m = struct();
for s0 = 1:numel(database)
matrixOfCodes = cell(size(matrixOfNames,2), length(codePart1));
for s1 = 1:size(matrixOfNames,2)
for s2 = 1:length(codePart1)
fullPath = strcat(codePart1{s2}, matrixOfNames{s0,s1}, codePart2{s2});
matrixOfCodes{s1, s2} = fullPath;
end
end
m.(database) = matrixOfCodes;
end
##### 2 CommentsShowHide 1 older comment
Joanna Przeworska on 3 Mar 2021
Dear Stephen,
The code works now exactly as I expected. Thank you very much!
Kind regards,
Joanna

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!