I have data in three column (x,y,z)
I want to pick the values of z in each grid ...
For exmaple, in fiure, the values of x are plotted coressponding to x,y. Then with a diffrenec of 1 we grided the plot.
I want to calculate the data points placed in each grid.

 採用された回答

KSSV
KSSV 2020 年 9 月 11 日
編集済み: KSSV 2020 年 9 月 12 日

0 投票

I have edited the code for your given points so that you can get the points for each grid.
x = -130.7:0.1:-129.7 ;
y = 45.6:0.1:46.3 ;
n = length(x) ;
m = length(y) ;
[X,Y] = meshgrid(x,y) ;
data = importdata("data.txt") ;
x = data(:,1) ; y = data(:,2) ; z = data(:,3) ;
% plot grid
plot(X,Y,'r',X',Y','r')
hold on
for i = 1:m-1
for j = 1:n-1
% Get the points of each grid
P = [X(i,j) Y(i,j) ;
X(i,j+1) Y(i,j+1) ;
X(i+1,j+1) Y(i+1,j+1) ;
X(i+1,j) Y(i+1,j)] ;
idx = inpolygon(x,y,P(:,1),P(:,2)) ;
iwant = [x(idx) y(idx) z(idx)] ;
plot(x(idx),y(idx),'.')
drawnow
end
end

11 件のコメント

aa
aa 2020 年 9 月 12 日
Thank you very much . We are very close to the required result. But, I want to place a third parameter in x-y grid. How can i do so ...
KSSV
KSSV 2020 年 9 月 12 日
You need not to worry about the third parameter, you can use the indices obtained to print the third parameter. I have edited the answer to include the third parameter.
aa
aa 2020 年 9 月 12 日
Thank you let me try this in my data set. In the next phase, I want to get an output as the point in each grid point.
KSSV
KSSV 2020 年 9 月 12 日
You can also use inequalities to get the points lying inside the grid if you are not okay with inpolygon.
m = 4;
n = 4 ;
x = linspace(0,1,m) ;
y = linspace(0,1,n) ;
[X,Y] = meshgrid(x,y) ;
% Pick some random points
x = rand(100,1) ;
y = rand(100,1) ;
z = rand(100,1) ;
% Get points lying inside the grid/ square
P = [0 0 ;0.3333 0 ; 0.3333 0.3333 ;0. 0.3333] ;
idx = inpolygon(x,y,P(:,1),P(:,2)) ;
iwant = [x(idx) y(idx) z(idx)] ;
% Use ineqialities
idx1 = x >= min(P(:,1)) & x <= max(P(:,1)) ;
idy1 = y >= min(P(:,2)) & y <= max(P(:,2)) ;
idxy = idx1 & idy1 ;
% plot grid
plot(X,Y,'r',X',Y','r')
hold on
plot(x,y,'ok')
plot(x(idxy),y(idxy),'+b')
aa
aa 2020 年 9 月 12 日
Thanks let me share with you the data set that i want to process ...
The grid dimensions are
x = linspace(-130.7,0.1,-129.7 ) ;
y = linspace(45.6,0.1,46.3) ;
Now we have to place the coresspodning enteries of z in the grid of x-y.
One the values placed in each grid after that i have to apply further analysis for teh enteries of each grid point
KSSV
KSSV 2020 年 9 月 12 日
x = -130.7:0.1:-129.7 ;
y = 45.6:0.1:46.3 ;
[X,Y] = meshgrid(x,y) ;
And you can proceed as given in the answer above.
aa
aa 2020 年 9 月 12 日
I just apply your code and get this
KSSV
KSSV 2020 年 9 月 12 日
Do you think the points given in P i.e polygon/ rectangle form a closed region? The code is correct it should work if you give all the details correct.
aa
aa 2020 年 9 月 12 日
Yes, the code is working perfectly, but one last thing is the calculation of "iwant" for each grid point. In case of manual calculation, I change the points of p for each grid.
KSSV
KSSV 2020 年 9 月 12 日
Edited the answer.
aa
aa 2020 年 9 月 12 日
Thank you this is really amazing and work perfectly, But if i want to get an output file of data points in each grid , how can this be possible.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeSimulink についてさらに検索

タグ

質問済み:

aa
2020 年 9 月 11 日

コメント済み:

aa
2020 年 9 月 12 日

Community Treasure Hunt

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

Start Hunting!

Translated by