Loop or no Loop?

13 Ansichten (letzte 30 Tage)
Pantelis Saviolakis
Pantelis Saviolakis am 24 Feb. 2014
Hello,greetings from Greece.I have a large data set with columns(longitude,latitude,u,v,w,etc).Because longitude and latitude are discontinuous in some points,i have to separate the data set in 81 parts (not equal in length) to take a different figure of each part(where longitude and latitude are continuous). I have done this manually but i was wandering if there was a way to do this in a loop(to be more beautiful),because the code i use every time is the same. The only thing that change is as an example: for the first figure i=1:1:517 , for the second figure i=518:1:721 ,for the third i=722:1:1200 ... where i is the line of the dataset and its size is not presized(the other code is the same).If someone can help, i would be gratefull.

Akzeptierte Antwort

Iain
Iain am 24 Feb. 2014
You need to figure out the right process for splitting your dataset.
Something like:
dlat = abs(diff(latitude));
datasets_end_at = find(dlat > 1);
datasets_start_at(1) = 1;
datasets_start_at(2:(numel(datasets_end_at)+1)) = datasets_end_at + 1;
datasets_end_at(end+1) = numel(latitude);
for i = 1:numel(datasets_start_at)
section_indices = datasets_start_at(i):datasets_end_at(i);
....

Weitere Antworten (1)

Pantelis Saviolakis
Pantelis Saviolakis am 24 Feb. 2014
Thank you for your direct answer to my question. I have tried it but i take only 2 figures instead of 81.I will see if i do sth wrong.Thanks again.
  2 Kommentare
Iain
Iain am 24 Feb. 2014
You will need to adapt what I gave you for what you need:
find(dlat > 1); might need to be:
find(dlat > 0.0001);
dlat = abs(diff(latitude)); might need to be:
d_dist = sqrt(diff(latitude).^2 + diff(longitude).^2);
Pantelis Saviolakis
Pantelis Saviolakis am 24 Feb. 2014
Exactly..It works. THANK YOU. 'Matlab Rules'

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by