How can I find the sum of the perimeter of a matrix?

2 visualizzazioni (ultimi 30 giorni)
Hi, I am wondering if I had a matrix [1,2,3;1,2,3;1,2,3] how I could find the sum of the perimeter. Thanks an advance.

Risposta accettata

dpb
dpb il 5 Ago 2016
One way amongst any number...
>> M=[1,2,3;1,2,3;1,2,3];
>> I=ones(size(M)); I(2:end-1,2:end-1)=0;
>> S=sum(reshape(M.*I,1,[]))
S =
16
>>

Più risposte (3)

Stephen23
Stephen23 il 5 Ago 2016
Modificato: Stephen23 il 5 Ago 2016
In one line is easy and very fast:
>> M = [1,2,3;1,2,3;1,2,3];
>> sum(sum([M([1,end],2:end-1),M(1:end,[1,end]).']))
ans = 16
  5 Commenti
dpb
dpb il 10 Feb 2018
[ ... Ricardo Florez Answer moved to comment since was a follow-up question on earlier Answer syntax ... dpb]
Hi. Why is it necessary to write two "sum" in the code: sum(sum(M(...)? Please see below:
the sum(M(:))-sum(sum(M(2:end-1,2:end-1)))
Thank you.
dpb
dpb il 10 Feb 2018
Modificato: dpb il 11 Feb 2018
Because sum(M(2:end-1,2:end-1)) is a row vector of the sums of the columns in the submatrix; to get the total have to then add those values. This is taken care of in the first sum by the use of the special syntax (:) that returns all elements of an array/matrix in a column so sum only needs to add the one column vector. There is no syntax in Matlab to apply the secondary indexing operation to the result of the first function call return; there've been many suggest the enhancement.

Accedi per commentare.


Sanjay Zamindar
Sanjay Zamindar il 28 Giu 2018
Modificato: dpb il 28 Giu 2018
function final_sum = peri_sum(A)
size_row = size(A,1)
size_col=size(A,2)
Sum_of_first_row = sum (A(1, [1:1:end])); %base
Sum_of_first_Colmn = sum(A([2:1:size_row],1))
%sum_col= sum(A([2:1:size_col], [1:size_col:size_col]));
Sum_of_last_column= sum(A([2:1:size_row],size_col))
sum_of_last_row = sum(A(size_row,[2:1:size_col-1]))
final_sum = sum_of_last_row+ Sum_of_last_column+Sum_of_first_Colmn+Sum_of_first_row
end

Ibrahim Abouemira
Ibrahim Abouemira il 19 Mag 2019

Community Treasure Hunt

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

Start Hunting!

Translated by