У меня есть большой файл XYZ (300276x3, этот файл включает координаты x и y (не широта / долгота, а полярная стереография) и угол места z), и мне интересно, можно ли преобразовать его в набор данных с сеткой(матрица nxm). Файл xyz можно загрузить с:
https://wetransfer.com/downloads/4ae4ce51072dceef93486314d161509920191021213532/48e4ee68c17269bd6f7a72c1384b3c9a20191021213532/60b04d
и импортировать в Matlab с помощью:
AIS_SEC = importdata('AIS_SEC.xyz');
Я пытался:
X= XYZ(:,1);
Y= XYZ(:,2);
Z= XYZ(:,3);
xr = sort(unique(X));
yr = sort(unique(Y));
gRho = zeros(length(yr),length(xr));
gRho = griddata(X,Y,Z,xr,yr')
imagesc(gRho)
Requested 300276x300276 (671.8GB) array exceeds maximum array size preference. Creation of arrays
greater than this limit may take a long time and cause MATLAB to become unresponsive. See array size
limit or preference panel for more information.
Я попытался:
% Get coordinate vectors
x = unique(XYZ(:,1)) ;
y = unique(XYZ(:,2)) ;
% dimensions of the data
nx = length(x) ;
ny = length(y) ;
% Frame matrix of grid
D = reshape(XYZ(:,3),[ny,nx]) ;
% flip matrix to adjust for plot
H = flipud(H) ;
% Transpose the matrix
H = H' ; % Check if is required
surf(x,y,H) ;
Error using reshape
To RESHAPE the number of elements must not change.
Теперь я могу нанести файл nx3 с помощью scatter3 (см. Изображение)
scatter3(XYZ(:,1),XYZ(:,2),XYZ(:,3),2,XYZ(:,3)) ;
colorbar
Но я бы хотел сделать это с imagesc. Следовательно, я хотел бы преобразовать файл nx3 в матрицу nxm (в растровом / сеточном формате), а в качестве дополнительного я хотел бы использовать его как файл геотипов для использования в QGIS.
Спасибо!