How to assign values to a mesh based on xyzc points?

5 Ansichten (letzte 30 Tage)
Philippe Corner
Philippe Corner am 8 Aug. 2021
Kommentiert: Philippe Corner am 10 Aug. 2021
load('variables.mat')
[xq, yq, zq] = meshgrid(min(x):12.5:max(x),min(y):12.5:max(y),min(z):2:max(z));
cq = nan(size(xq));
[~, pos] = ismember([x,y,z],[xq(:),yq(:),zq(:)],'rows');
cq(pos) = c;
The code creates a mesh grom the x y z data attached. I want to assign a c value to the mesh points that coincide with my original xyzc and left the rest of the points as nan value from "cq".
My indexes from ismember does not work because i havent been able to create a mesh that coincides with all the points from my xyz.
Thanks in advance,
  3 Kommentare
Philippe Corner
Philippe Corner am 8 Aug. 2021
Hi Yazan, thanks for your comment. No I dont want to create a big mesh, I want to try to guarantee that I could get the points from my initial data. Other Idea that I'm getting is to maybe interpolate data to associate a c value to the points of the mesh that I got.
You see that the question is about giving c values to the mesh I create, so the approach may be like using my xyzc information to give a c value to my new xq yq zq points and be sure that outside my xyz, all the cq values are NaN..
Adam Danz
Adam Danz am 9 Aug. 2021
The biggest problem is that your data are floating decimals with very high precision. For example,
format long
z(end)
ans =
1.898261677911120e+03
so it's very unlikely that you'll generate perfect matches with a simple grid.
Without knowing the main goal I can't suggest an alternative.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

KSSV
KSSV am 9 Aug. 2021
load('variables.mat') ;
nx = length(unique(x)) ;
ny = length(unique(y)) ;
m = 100 ; n = 100 ;
xi = linspace(min(x),max(x),m) ;
yi = linspace(min(y),max(y),n) ;
[X,Y] = meshgrid(xi,yi) ;
Z = griddata(x,y,z,X,Y) ;
C = griddata(x,y,c,X,Y) ;
surf(X,Y,Z,C)
shading interp
colorbar
  1 Kommentar
Philippe Corner
Philippe Corner am 10 Aug. 2021
Mm no, probably I did no express myself correctly. I asked again the same question but with all the data here:
As you can see im proposing to use an interpolation now to solve it, since the positions of the x,y,z dots may be "impossible" to match with a regular grid.
Thanks a lot KSSV

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Interpolation 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