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

1 回表示 (過去 30 日間)
Aurea94
Aurea94 2017 年 2 月 10 日
編集済み: Stephen23 2017 年 2 月 10 日
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 件のコメント
Aurea94
Aurea94 2017 年 2 月 10 日
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 2017 年 2 月 10 日
編集済み: Stephen23 2017 年 2 月 10 日
@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:

サインインしてコメントする。

回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 2 月 10 日
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 件のコメント
Aurea94
Aurea94 2017 年 2 月 10 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by