Create zeros in matrix size, but not 1. column and row, or last column and row

Hi
I am trying to make a matrix where the middle has to be changed into zeros, f. ex. with magic(4)
v=magic(4)
v(2,2)=0; v(2,3)=0; v(3,2)=0; v(3,3)=0;
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Here i want the 11, 10, 7 and 6 to be zeros. But need it to be done in random size matrix.
Pretty new in the whole matlab world.
Anyone whom can help?

3 Comments

What is the middle of a matrix 9x9?
(5,5) seems like it would be the middle of that..
What I mean, is that everything else than first and last row + first and last column. Hope this will clear things out.

Sign in to comment.

 Accepted Answer

v(2:3,2:3) = 0;
Note: This method only works for rectangular regions. For other shapes you need to use linear indexing.

5 Comments

If by "middle" you mean everything except the boundaries of v, then do:
v(2:end-1,2:end-1) = 0;
Yea, the problem is not very well described...
What I mean, is that everything else than first and last row + first and last column. Hope this will clear things out. So no matter how big or small the matrix are, there will only be first and last row + first and last column
That's what Roger's code
v(2:end-1,2:end-1) = 0;
does, so you should be all set.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!