Clear Filters
Clear Filters

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

5 views (last 30 days)
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 Comments
Philippe Corner
Philippe Corner on 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 on 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.

Sign in to comment.

Answers (1)

KSSV
KSSV on 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 Comment
Philippe Corner
Philippe Corner on 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

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!