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)
1 件のコメント
採用された回答
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
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 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!