How to create a matrix of size N×N that has ones in the border and zeros inside?

8 views (last 30 days)
Create a matrix of size N×N that has ones in the border and zeros inside.
For example, if N=3 the matrix can be created with
>> A=ones(3,3);
A(2,2)=0
A =
1 1 1
1 0 1
1 1 1
Make this construction depend on N and work for any positive integer N≥2.

Accepted Answer

KL
KL on 6 Sep 2017
Edited: KL on 6 Sep 2017
function A = oneZeroMatrix(N)
A = zeros(N);
A([1 end],:)=1;
A(:,[1 end])=1;
end
% and then
N = 5;
A = oneZeroMatrix(N);
  2 Comments
Walter Roberson
Walter Roberson on 26 Nov 2022
Let us experiment:
N = 5;
A = oneZeroMatrix_original(N)
A = 5×5
1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1
A = oneZeroMatrix_modified(N)
A = 5×5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
function A = oneZeroMatrix_original(N)
A = zeros(N);
A([1 end],:)=1;
A(:,[1 end])=1;
end
function A = oneZeroMatrix_modified(N)
A = zeros(N);
A([1:end],:)=1;
A(:,[1:end])=1;
end

Sign in to comment.

More Answers (1)

Stephen23
Stephen23 on 6 Sep 2017
Edited: Stephen23 on 26 Nov 2022
M = ones(5);
M(2:end-1,2:end-1) = 0
M = 5×5
1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!