MATLAB Answers


For loop inside structure

Asked by Mohammed Hammad on 24 Jan 2019
Latest activity Edited by Mohammed Hammad on 26 Jan 2019
I have a structure called (level3) and inside it some fields (e.g x0, vx). each field is an array with some values as shown in the screenshot.
I would like to go through these fields values and multply them as follows:
.... and so on.
so I got at the end 10 arrays of results of x
I tried to do it like this but I just got one array with the last value.
fields = fieldnames(level3);
for k=1:10
x = [x0. * vx];
Thanks in advance


Sign in to comment.




2 Answers

Answer by Mohammed Hammad on 25 Jan 2019
Edited by Mohammed Hammad on 26 Jan 2019
 Accepted Answer

I got the answer after many tries as follows:
for n = 1:10
x{n} = level3(n).x0. * (level3(n).vx)


Those square brackets are superfluous. Get rid of them.
Note that your inner loop serves no purpose, because you do not use its loop index anywhere and none of its iterations depend on previous iterations, so the results of every of its iteration will get discarded except for the last one.
Thank you for your notes. yeah I removed the inner loop and I got the desired results.

Sign in to comment.

Answer by Bob Nbob
on 24 Jan 2019

fields = fieldnames(level3);
for k=1:10
x = [x0. * vx];
If I understand this correctly you're trying to capture the array of multiplications (x0 .* vx) for all of the different elements of the structure. I believe that all you're missing then is either an index on x, or to concatonate the results of x with the previous values.
fields = fieldnames(level3)
x = [];
for k = 1:10
x = [x;[x0.*vx]];

  1 Comment

It works , thank you. but the answer is Double(50*1) and I want it 10 arrays, each array has different number of values. the length must be the same as x0 and vx arrays length

Sign in to comment.