I want to plot ReP^2+ImP^2 as function of numero = 5, 10, 15 …145 for each mode(m,n) I would like to have something like this with the name of the mode on each curve. Here is the beginning of my code, anyone can help ?
data = readfile(test.txt)
HeaderLines = 8;
for i=(HeaderLines+1):numel(tm)
%store in temp variable
if isempty(data{i}),continue,end
str=data{i};
line = str2num(str);
....
You can find my file attached.
Thank you in advance,

댓글 수: 5

Rik
Rik 2020년 9월 23일
Without knowing how your data is stored in your text file it is difficult to give you advice. Is it the same structure as you have described here?
It is a good idea to read all your data into Matlab variables and only then do the plotting. That way you separate the two tasks. If you want to recycle either the plotting or the reading for a later project you will not have to go through every line to determine what you need. That modularity is a very useful strategy you see in action with my readfile function: instead of writing the same code again, I use the function.
Izem
Izem 2020년 9월 23일
'Without knowing how your data is stored in your text file it is difficult to give you advice. Is it the same structure as you have described here?'
Yes, it is the same, I attached the file, is that answered your question ?
Rik
Rik 2020년 9월 23일
That answered that question, yes.
The way I see it, you need to follow these steps:
  1. Load the data into Matlab variables
  2. Get the data for a single line
  3. Plot the line and create an annotation (e.g. with the text function)
  4. Repeat 2-3 for each combination of n and m
Try each step. If you have trouble with any of them, please describe what you tried.
Izem
Izem 2020년 9월 23일
I already start doing exactly what you described before posting here but it will be long since I have many (m,n) (14 in this case) so I will need 14 if m == .. n ==.. I wonder if there is a shorter way to do it. I note that we can know the combinations from line 6 in the text file : 'VECTEUR MODE : 4 4 4 4 3 3 3 2 2 2 1 1 1 1' which mean that we will have :
4 modes starting with 0 : m=0 and n change from 1 to 4 (0 1, 0 2, 0 3, 0 4)
4 modes starting with 1 (1 1, 1 2, 1 3, 1 4)
...
1 mode starting with 13 (13, 1)
So please tell me if you think there is a smarter way to do it using line 6 ? otherwise I will do what you already suggested.
Rik
Rik 2020년 9월 23일
You should convert the entire file. That means you will have a vector m with 5145 elements. Then you can use unique and use the result for a for loop, in which you can use ismember to extract all positions where m has a specific value.
You can also use that line to extract the values of m and n you need to combine.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

도움말 센터File Exchange에서 Annotations에 대해 자세히 알아보기

태그

질문:

2020년 9월 23일

댓글:

Rik
2020년 9월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by