Find the sum of the non perimeter elements of a matrix using a for loop

1 次查看(过去 30 天)
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
Image Analyst 2016-4-24
编辑:Image Analyst 2016-4-24
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);
  2 个评论
Vinny
Vinny 2016-4-24
Thank you! How about if I wanted it to find the sum of the perimeter elements?
Image Analyst
Image Analyst 2016-4-24
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);

请先登录,再进行评论。

更多回答(2 个)

Azzi Abdelmalek
Azzi Abdelmalek 2016-4-24
编辑:Azzi Abdelmalek 2016-4-24
A=B
A(:,[1 end])=0
A([1 end],:)=0
out=sum(A(:))

Ibrahim Abouemira
Ibrahim Abouemira 2019-5-19

类别

Help CenterFile Exchange 中查找有关 Multidimensional Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by