How can I extract a submatrix based on rectangles drawn on a map?
2 ビュー (過去 30 日間)
古いコメントを表示
I have plotted a map (401x401 matrix) and I drew four rectangles on it. I would like to extract 4 submatrices that correposond to the data inside the four rectangles. I'm also trying to extract a fifth submatrix that correpospond to all values outside the four rectangles (I assume this matrix will be 401x401 with zeros at indices already extracted). I tried extracting and plotting many times to get a close submatrix to what I am looking for (below the third comment in the code).
Can anyone please help me with this?
x = 0:25:10000;
y = 0:25:10000;
% map = 401x401 matrix (double)
figure;
imagesc(x,y,map); colormap jet; c=colorbar;
hold on; contour(x,y, map,'k','ShowText','on'); axis xy; xlabel('X (m)'); ylabel('Y (m)');
% Rectangles drawn
rectangle('Position', [3325 3300 3325 4175],'EdgeColor','y','LineWidth',4)
rectangle('Position', [0 0 4100 3300], 'EdgeColor','y', 'LineWidth', 4);
rectangle('Position', [4100 0 5900 3300], 'EdgeColor','y', 'LineWidth', 4);
rectangle('Position', [2525 7475 6000 2525], 'EdgeColor','y', 'LineWidth', 4);
% I tried extracting as follows but I couldn't extract the fifth submatrix
map_seg1 = map(133:301, 138:265);
map_seg2 = map(1:133, 1:164);
map_seg3 = map(1:133, 165:end);
map_seg4 = map(301:end, 102:340);
0 件のコメント
採用された回答
Chunru
2021 年 8 月 30 日
% The fifth matrix
map_seg5 = map;
map_seg5(133:301, 138:265) = 0;
map_seg5(1:133, 1:164) = 0;
map_seg5(1:133, 165:end) = 0;
map_seg5(301:end, 102:340) = 0;
3 件のコメント
Chunru
2021 年 8 月 30 日
編集済み: Chunru
2021 年 8 月 30 日
It seems that your index is not correct (wrong interperation of the position vector?). Here is code for finding one submatrix. You can repeat it for other submatrices.
x = 0:25:10000;
y = 0:25:10000;
r1 = [3325 3300 3325 4175]; % [x y w h]
idx_x = find(x>= r1(1) & x<=r1(1)+r1(3)); % find the index within the box
idx_y = find(x>= r1(2) & x<=r1(2)+r1(4)); % find the index within the box
%map_seg1 = map(idx_y, 1idx_x); % uncomment this
idx_x([1 end])
idx_y([1 end])
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Geodesy and Mapping についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!