2 views (last 30 days)

I have this matrix

B=[-3 4 7;9 11 -13;-17 19 -23;-29 31 37;39 41 47]

and I need to find the sum of the non perimeter elements using a for loop. I can find the sum of a single column or row or of the whole matrix, but I don't know how to write a loop to only sum the 3 non perimeter numbers. Any help is appreciated, thank you.

Image Analyst
on 24 Apr 2016

Edited: Image Analyst
on 24 Apr 2016

Try it this way:

B=[-3 4 7;9 11 -13;-17 19 -23;-29 31 37;39 41 47]

[rows, columns] = size(B)

theSum = 0;

for col = 2 : columns - 1

for row = 2 : rows-1

theSum = theSum + B(row, col);

end

end

fprintf('The sum = %f\n', theSum);

Image Analyst
on 24 Apr 2016

Hopefully you're not just asking me to do all your homework for you. Here is one way:

B=[-3 4 7;9 11 -13;-17 19 -23;-29 31 37;39 41 47]

[rows, columns] = size(B)

theSum = 0;

for col = 1 : columns

for row = 1 : rows

if row == 1 || row == rows || col == 1 || col == columns

% It's on the perimeter of the array.

theSum = theSum + B(row, col)

end

end

end

fprintf('The sum = %f\n', theSum);

Azzi Abdelmalek
on 24 Apr 2016

Edited: Azzi Abdelmalek
on 24 Apr 2016

A=B

A(:,[1 end])=0

A([1 end],:)=0

out=sum(A(:))

Ibrahim Abouemira
on 19 May 2019

Hello,

Here's a function that performs your required task.

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

Start Hunting!
## 0 Comments

Sign in to comment.