Convert x y coordinates and z data to Matrix
40 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
user20912
am 15 Sep. 2022
Beantwortet: Robert Daly
am 11 Aug. 2023
I have three vectors
>> whos x y VAR1
Name Size Bytes Class Attributes
x 21242x1 679744 double
y 21242x1 679744 double
var1 21242x1 679744 double
where X and Y represent the location of the corresponding value of var1. What Im trying to do is to convert all this data to a matrix.
What I've done until now is:
a1 = 21242;
m = zeros(a1,a1).*NaN;
indexes = sub2ind([a1,a1],x,y);
m(indexes) = var1
Error using sub2ind (line 43)
Out of range subscript.
Which, according to another question about this error, is because I'm trying access elements which does not exist on the matrix.
Any help?
Thanks!
5 Kommentare
Akzeptierte Antwort
Star Strider
am 15 Sep. 2022
It would help to have the actual vectors.
It may be possible to use the reshape function to create matrices from the vectors, if the vectors are from a gridded original matrix. The easiest way to determine the dimensions of the arrays is to use the unique function and look at the second output. The elements of the second output should be regularly-spaced, and that difference is one dimension to specify in the reshape call, with the other one left as the empty vector [].
.
6 Kommentare
Weitere Antworten (1)
Robert Daly
am 11 Aug. 2023
I would use interpolation to convert to a regular grid.
scatteredInterpolant is the funtion to do this with your irregularly spaced data.
[X,Y] = meshgrid(linspace(min(x),max(x),500),linspace(min(y),max(y),500));% make 500x500 grid
f = scatteredInterpolant(x,y,var1); % set up the interpolater with your data
Grid_Var1 = f(X,Y); % Do the interpolation onto the grid set up above
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrices and Arrays 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!