How to find indices of a rectangular region inside big matrix? | Efficiently

12 views (last 30 days)
How can indices of elements belong to a rectangular region can be found?
A = [4 4 4 4 4 4 4
4 1 1 1 1 3 0
4 1 3 3 1 3 0
4 1 3 3 1 3 0
4 1 1 1 1 3 0
4 4 4 4 4 4 4];
Input: Matrix's size[height, width] , [Row_start Row_end], [Col_start Col_end]
Output: [21 22 23 27 28 29 33 34 35]
Why efficiently : to do same for multiple combinations of rows & columns
Thank you
  4 Comments
Caglar
Caglar on 2 Nov 2018
I am not sure If I understood what you are asking for. If you want to get a part of a matrix you can do it like A(3:5,4:6) .
JAI PRAKASH
JAI PRAKASH on 2 Nov 2018
Sorry if I am not clear in my question.
I want linear indices of all the elements present in rectangular region.
e.g

Sign in to comment.

Accepted Answer

Bruno Luong
Bruno Luong on 2 Nov 2018
Edited: Bruno Luong on 2 Nov 2018
recidx = (Row_start:Row_End)' + height*(Col_start-1:Col_end-1)
  6 Comments

Sign in to comment.

More Answers (2)

Geoffrey Schivre
Geoffrey Schivre on 2 Nov 2018
Hello,
I'm not sure if it's efficient enough but try :
p = nchoosek([Row_start:Row_end,Col_start:Col_end],2);
idx = unique(sub2ind(size(A),p(:,1),p(:,2)));
Geoffrey
  5 Comments
Geoffrey Schivre
Geoffrey Schivre on 2 Nov 2018
Sorry, I didn't refresh this page so I didn't see that your question was answered. I'm glad you find what you ask for !
JAI PRAKASH
JAI PRAKASH on 2 Nov 2018
Ya, But I learn interesting things from your comments.
'nchoosek' is new to me
Thanks

Sign in to comment.


Caglar
Caglar on 2 Nov 2018
Edited: Caglar on 2 Nov 2018
function result = stack (A,row_start,row_end,col_start,col_end)
% A = [4 4 4 4 4 4 4
% 4 1 1 1 1 3 0
% 4 1 3 3 1 3 0
% 4 1 3 3 1 3 0
% 4 1 1 1 1 3 0
% 4 4 4 4 4 4 4];
% row_start=3; col_start=4;
% row_end=5; col_end=6;
height=(size(A,1));
result=(row_start:row_end)+(height)*((col_start:col_end)'-1);
result=transpose(result); result=result(:);
end

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Tags

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!