Constructing a 3D matrix out of single column coordinate data with a corresponding value
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Emil Litjens
il 28 Mar 2024
Modificato: Emil Litjens
il 29 Mar 2024 alle 13:42
Hi,
I need to analyze a 3d velocity field from tecplot. I could transfer the data into a 4 column matrix consisting of 6644672 rows. The first three columns represent that XYZ respectively, and the fourth column is the velocity data at that coordinate.
Since I want to filter this field in the future, I for now need to construct a 3d Matrix out of this imported data. It is important that no coordinates get lost, that the velocity value stays at the right coordinate and that the coordinates are oriented in the right way to eachother.
The challenging thing for me was that the coordinates in the 4 column matrix are not ordered in some logical way.
Can someone help me?
2 Commenti
Catalytic
il 28 Mar 2024
What would the voxels of the 3D matrix contain, and how would those contents be related to the imported data?
Risposta accettata
Matt J
il 28 Mar 2024
Modificato: Matt J
il 28 Mar 2024
Let's call your Nx4 matrix XYZV.
xyzv=num2cell(sortrows(XYZV,[3,2,1]) ,1);
[I,J,K,V] =deal(xyzv{:});
I=findgroups(I);
J=findgroups(J);
K=findgroups(K);
matrix3D=accumarray([I,J,K], V); %the result
3 Commenti
Matt J
il 29 Mar 2024 alle 13:25
It means your (x,y,z) data do not sweep over a cube exactly. You could try the modification below, which allows the (x,y,z) to deviate from the nodes of a cube with a tolerance, but I don't/can't know what the appropriate TOL for your data would be.
TOL=1e-4; %example
I=findgroupstol(I,TOL);
J=findgroupstol(J,TOL);
K=findgroupstol(K,TOL);
function G=findgroupstol(U,tol)
[~,~,G]=uniquetol(U,tol);
end
Più risposte (1)
Matt J
il 28 Mar 2024
Modificato: Matt J
il 28 Mar 2024
If you are trying to query velocity values at arbitrary 3D locations, do not use a 3D array. Instead, use scatteredInterpolant or griddata.
3 Commenti
Vedere anche
Categorie
Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!