Cut around the center of a matrix

19 views (last 30 days)
I.G
I.G on 29 Apr 2015
Commented: Image Analyst on 1 Apr 2021
Hi everyone,
I have a quick question which may be simple to answer. I have a matrix,
A = [ 5 5 5 5 5 ; 5 4 4 4 5 ; 5 4 4 4 5 ; 5 4 4 4 5 ; 5 5 5 5 5 ]
'A' is always an odd number of lines and columns, and may be 100s of them. I want to cut at my own convenience a portion around the center, like
B = [ 4 4 4 ; 4 4 4 ; 4 4 4 ]
How can I do it?
Thanks

Answers (3)

Image Analyst
Image Analyst on 29 Apr 2015
Try this:
margin = 1; % Whatever you want.
B = A(margin+1:margin+1, end-margin:end-margin);
  2 Comments
Image Analyst
Image Analyst on 1 Apr 2021
Thanks. Fix:
A = [ 5 5 5 5 5 ; 5 4 4 4 5 ; 5 4 4 4 5 ; 5 4 4 4 5 ; 5 5 5 5 5 ]
margin = 1; % Whatever you want.
B = A(margin + 1 : (end - margin), margin + 1 : (end - margin))
A =
5 5 5 5 5
5 4 4 4 5
5 4 4 4 5
5 4 4 4 5
5 5 5 5 5
B =
4 4 4
4 4 4
4 4 4

Sign in to comment.


Thorsten
Thorsten on 29 Apr 2015
Edited: Thorsten on 29 Apr 2015
szcut = 3;
i1 = (size(A, 1) - szcut)/2;
ind1 = i1+1:i1+szcut;
B = A(ind1, ind2);
If A is not square or if you want to cut out non-square parts, define ind2 analogously.

Michael Haderlein
Michael Haderlein on 29 Apr 2015
If c indicates the range you want to remove and would be 3 in your example, just use
B=A((end-c)/2+1:(end+c)/2,(end-c)/2+1:(end+c)/2);
  4 Comments
Image Analyst
Image Analyst on 29 Apr 2015
In general it's B = A(row1:row2, column1:column2). You can decide on the rows and columns in any way that you want. If you want to get only a particular value (like 4) automatically (even if it's not a rectangle) then let me know. It's possible.
I.G
I.G on 29 Apr 2015
I made it like this:
cx=ceil(size(A,1)/2); % cx is the center line cy=ceil(size(A,2)/2); % cy is the center row x= ... % the steps in x axis from center x y= ... % the steps in y axis from center y B=A((cx-y):(cx+y),(cy-x):(cy+x));
Thanks for the help!

Sign in to comment.

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!