Clear Filters
Clear Filters

File names in plots legend, from struct data; Matlab says is not an array.

7 views (last 30 days)
I have multiple files with struct data, and I want to place a legend with a group of data.
I tried to use the Benjamin Kraus to solve it, but the message of Matlab is: Cell contents assignment to a non-cell array object.
https://www.mathworks.com/matlabcentral/answers/81979-an-elegant-alternative-to-nested-for-loops-for-plotting-simulations The code which I wrote:
for i = 1:numreg
leg{i} = [BLR4.record{i}.name];
C1 = BLR4.record{i}.T;
C2 = BLR4.record{i}.Sd;
plot (C1,C2)
hold on
end
legend(leg)

Accepted Answer

Stephen23
Stephen23 on 28 Sep 2018
Probably leg is not a cell array, so trying to use cell array indexing with it is going to be an error.
Solution: make leg a cell array:
leg = cell(1,numreg);
for ...
leg{k} = ...
...
end
  8 Comments
Stephen23
Stephen23 on 28 Sep 2018
Edited: Stephen23 on 28 Sep 2018
In your code you define numreg like this:
numreg = size(BLR4.record);
which means that numreg will be a numeric vector with atleast two elements (i.e. a vector). But to use cell (and colon reliably) you will need to use a scalar. Most likely you want the number of rows, so you can simply specify that you only want that single value (i.e. scalar) when you call size:
numreg = size(BLR4.record,1);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!