expand array within for loop

1 view (last 30 days)
hello,
I have this code:
close all
x=[0,1,2,3,4,5]
x1=sin(x)
p1=x1(2)
p2=x1(3)
x3=cos(x)
p4=x3(2)
p5=x3(3)
figure(1)
plot(x1)
hold all
plot([2],[p1],'o')
plot([3],[p2],'o')
plot(x3)
plot([2],[p4],'o')
plot([3],[p5],'o')
k=2
for k=1:k
ls1=[num2str(k),'.Q']
ls2=[num2str(k),'.SR']
ls3=[num2str(k),'.r']
end
legend(ls1,ls2,ls3)
and I would like to fix the legend. I want my program to tell me that the 6 legend variables are: 1.Q,1.SR,1.r,2.Q,2.SR,2.r
Right now the program is overwriting the outcome of the for loop.
How do I do this?
Thank sou yo much!

Accepted Answer

Walter Roberson
Walter Roberson on 3 Apr 2019
legend( [1 2] + [".Q"; ".SR"; ".r"] )
Requires R2017a or later.
  2 Comments
Walter Roberson
Walter Roberson on 3 Apr 2019
Note that for this purpose it was important that the first part [1 2] be a row vector and the second part [".Q"; ".SR"; ".r"] be a column vector, and that R2016b or later were used, as "implicit expansion" is used here to get all combinations of the two. The restriction to R2017a or later is because the string object syntax "" was introduced in R2017a. There is a way to extend the use of string objects to R2016b as well. String objects did not exist before R2016b, so for earlier releases a different approach would have to be used.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!