matlab
[matlab] 행렬 변환 (n*3 → a*b)
humming_stereo
2025. 1. 13. 16:52
서론
n*3 되어있는 자료(예: x,y,z 형식의 수심자료)를 aXb형태의 2차원 행렬로 변환하는 방법을 제시한다.
이 방법은 산정도 형식의 자료가 아닌, 동일한 간격의 x,y 격자형 구조를 가지는 자료에 적용 가능하다.
이 방법은 산정도 형식의 자료가 아닌, 동일한 간격의 x,y 격자형 구조를 가지는 자료에 적용 가능하다.
방법
1. x,y의 각 좌표의 고유값 추출하여 격자의 기준 축 구성
2. 각 자료 지점이 기준축에 해당하는 x,y 인덱스 값 추출
3. 추출한 기준 축을 바탕으로 x,y 격자 프레임 생성
4-1. 전체 격자 행렬을 NaN 값으로 정의하여, 자료가 없는지점을 표시
2. 각 자료 지점이 기준축에 해당하는 x,y 인덱스 값 추출
3. 추출한 기준 축을 바탕으로 x,y 격자 프레임 생성
4-1. 전체 격자 행렬을 NaN 값으로 정의하여, 자료가 없는지점을 표시
4-2. 추출한 인덱스를 sub2ind 함수를 사용하여 1차원 인덱스로 변환 후, 해당위치의 수심값을 삽입
* sub2ind
2차원 또는 다차원 행렬의 행, 열 인덱스를 1차원 인덱스로 변환하는 함수
코드
% 자료 불러오기
origin.data = load('depth_data.csv'); origin.x = origin.data(:,1);
origin.y = origin.data(:,2);
origin.z = origin.data(:,3);
% 1. 격자 기준 축 구성
tp.axis_x = unique(origin.x);
tp.axis_y = unique(origin.y);
% 2. 각 좌표 기준 축의 인덱스 값 추출
[~,tp.ind_x] = ismember(origin.x,tp.axis_x);
[~,tp.ind_y] = ismember(origin.y,tp.axis_y);
% 3. 격자 프레임 생성
[new.x,new.y] = meshgrid(tp.axis_x,tp.axis_y);
% 4. NaN 초기화 및 수심값 삽입
new.z = nan(size(new.x));
new.z(sub2ind(size(new.x),tp.ind_y,tp.ind_x)) = origin.z;
|