フィルターのクリア

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

2 ビュー (過去 30 日間)
Vinny
Vinny 2016 年 4 月 24 日
回答済み: Ibrahim Abouemira 2019 年 5 月 19 日
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 Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by