MATLAB Answers


assigning a number to a specific struct (1 to 9) using a for loop

Asked by JamJan
on 31 May 2018
Latest activity Commented on by Stephen Cobeldick on 31 May 2018
In my research I have several participants, named AT_110001 to AT_110009. I have made structures containing data, however I want to add a field to each one with a for loop. How I did this until now:
for i = 1:9
[AT_11000(i)(:).Sheet] = deal(['Sheet', num2str(i)]);
But this does not work, how can I make this work?

  1 Comment

Dynamically accessing variable names is one way that beginners force themselves into writing slow, complex, buggy code that is hard to debug. Red this to know why:
The simpler solution is to use a non-scalar structure, which makes this task trivially easy with indexing.

Sign in to comment.


1 Answer

Answer by Ameer Hamza
on 31 May 2018

This type of AT_11000(i)(:) chained indexing is not supported in MATLAB. Also, you didn't mention the fields of your struct object. I assume you want to do something like this
[AT_11000.Sheet] = deal(['Sheet', num2str(i)]);
without the for loop. The syntax is correct, but I don't know it is doing what you want because you didn't share any sample dataset.


Sign in to comment.