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

8 次查看(过去 30 天)
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)

采纳的回答

Stephen23
Stephen23 2018-9-28
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 个评论
Stephen23
Stephen23 2018-9-28
编辑:Stephen23 2018-9-28
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);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by