How can I plot an order which is a string variable?

1 view (last 30 days)
Due to my code I have a variable which contains the orders I need to plot: S is a structure of 1x5 struct of 2 fields(Ftime and Ftrans_error)
text = S(1).Ftime,S(1).Ftrans_error,S(2).Ftime,S(2).Ftrans_error,S(3).Ftime,S(3).Ftrans_error
'text' is a string type. I need to make this variable because the size of 'text' changes with the number of variables the structure S contains.
If I do plot(text) I get the following error : Error using plot. Invalid first data argument.
If I write directly
plot(S(1).Ftime,S(1).Ftrans_error,S(2).Ftime,S(2).Ftrans_error,S(3).Ftime,S(3).Ftrans_error) it works properly.
I think the problem is that when I create the variable 'text' it considers I want to plot a string.
So how can I make this 'text' variable an order which plot can execute? I would really apreciate your help. If you need further information to understand the problem please tell me.
Thank you very much in advance!
  3 Comments
Aurea94
Aurea94 on 10 Feb 2017
Thank you. I read this and I know that is not the best way, but I cannot do it with a switch becaouse I would need to do the same number of cases as files (there are much more than the 3 I wrote in the exambple to explain you my problem).
I don't understand when you tell me "use the strings to select from fields of a structure of numeric data".
Thanks!
Stephen23
Stephen23 on 10 Feb 2017
Edited: Stephen23 on 10 Feb 2017
@Aurea94: somewhere you have some numeric data. Hopefully not in lots of separate variables (read the link to know why that would be a really bad idea). If you have sensibly kept your numeric data in a structure then you can simply access the fields (and your numeric data) from that structure using those strings:

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 10 Feb 2017
Please do not name a variable "text" as that interferes with using the key graphics routine text().
What you should be doing is putting your values into a cell array, and then doing cell expansion.
thisorder = {S(1).Ftime,S(1).Ftrans_error, S(2).Ftime, S(2).Ftrans_error, S(3).Ftime,S(3).Ftrans_error};
plot(thisorder{:});
  1 Comment
Aurea94
Aurea94 on 10 Feb 2017
Thank you Walter. In fact my variable is named 'text_plot' but I didn't write it to shorten my text. It wasn't a good idea, sorry! I tried what you propose. But I get the same error mentioned before.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!