select data from specific range

4 Ansichten (letzte 30 Tage)
joo tan
joo tan am 25 Dez. 2011
Kommentiert: Mitson Monteiro am 6 Dez. 2013
Dear all,
My file have 3 column and more than hundred line..First column represent latitude, second longitude and lastly sea level. My plan is to average the sea level data based on specific range of latitude and longitude..I try design the program but still not work..Let say my file name is 200012.txt and i try to extract sea level data in range of (2<lat<3) & (95<lon<97)..But still not success. Help me
f=load('200012.txt'); lat=f(:,1); lon=f(:,2); sla=f(:,3);
x=sla(find((2<lat<3) & (95<lon<97)))

Akzeptierte Antwort

Chandra Kurniawan
Chandra Kurniawan am 25 Dez. 2011
Hello,
I have a text file formated :
1 90 100
1 96 101
1 95 102
2 91 103
2 96 104
1 89 105
3 87 106
3 96 107
2 90 108
4 97 109
2 76 110
And Here the script :
clear; clc;
f = load('200012.txt');
lat = f(:,1);
lon = f(:,2);
sla = f(:,3);
%x = sla(find((2<lat<3) & (95<lon<97)))
r = sla(find(lat >=2 & lat <= 3 & lon >=95 & lon <= 97))
The Result :
r =
104
107
  7 Kommentare
Chandra Kurniawan
Chandra Kurniawan am 25 Dez. 2011
No, I think you can't do that.
i = 2 : 0.25 : 15; %size 1x53
j = 95 : 0.25 : 126; %size 1x125
Coz, the size of i and j must be same.
Mitson Monteiro
Mitson Monteiro am 6 Dez. 2013
suppose if i want the answer as r = 2 96 104 3 96 107 what will it be

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (4)

Chandra Kurniawan
Chandra Kurniawan am 25 Dez. 2011
If size of i and j are same, then
f = load('200012.txt');
lat = f(:,1);
lon = f(:,2);
sla = f(:,3);
i = 2 : 0.25 : 15;
j = 95 : 0.25 : 126;
for x = 1 : numel(i)-1
r = sla(find(lat >=i(x) & lat <= i(x+1) & lon >= j(x) & lon <= j(x+1)))
b = mean(r)
end
This code I just use x = 1 : 53
  1 Kommentar
joo tan
joo tan am 25 Dez. 2011
tq chandra...i am sorry..i mistake give wrong information..the true is to find the sla value in the specific range lat and lon but the lat and lon changes 0.25..let say first operation is to find and mean the sla value in the range
2=<lat<=2.25 and 95=<lon<=95.25
second operation is
2=<lat<=2.25 and 95.25=<lon<=95.5
third
2=<lat<=2.25 and 95.5=<lon<=95.75
.............until the longitude 126..after that, the operation will continue with
latitude 2.25 and longitude same as above..it is like to grid bin by bin..the size of each bin 0.25
But, tq because your idea is good..i will try to find solution..I am so sorry about this..take your time

Melden Sie sich an, um zu kommentieren.


joo tan
joo tan am 25 Dez. 2011
already solve problem..thanks
f = load('D1.ASC'); lat = f(:,1); lon = f(:,2); sla = f(:,3); i=2:0.25:15 j = 95 : 0.25 : 126; F='meanBIN.TXT' for y=1:52 for x = 1 : 124 r1 = sla(find(lat >i(y) & lat <= i(y+1) & lon >= j(x) & lon <= j(x+1))) b = mean(r1)
fid=fopen(F,'a'); fprintf(fid,'\n%15.6f%15.6f%15.6f%15.6f%15.6f%15.6f\n',i(y+1),j(x+1),b); fclose(fid); end end

Image Analyst
Image Analyst am 25 Dez. 2011
Try something like this (I didn't test it):
rowsToAverage = lat>2 & lat<3 & lon>95 & lon<97;
meanValue = mean(sla(rowsToAverage));
  1 Kommentar
joo tan
joo tan am 25 Dez. 2011
yes..it is works..but my problem is, i want to make the latitude and longitude spacing 0.25..

Melden Sie sich an, um zu kommentieren.


joo tan
joo tan am 25 Dez. 2011
yes..it is works..but my problem is, i want to make the latitude and longitude spacing 0.25..

Kategorien

Mehr zu Graphics Object Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by