13 views (last 30 days)

dpb
on 5 Aug 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

>>

Stephen Cobeldick
on 5 Aug 2016

Edited: Stephen Cobeldick
on 5 Aug 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

dpb
on 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
on 10 Feb 2018

Sanjay Zamindar
on 28 Jun 2018

Edited: dpb
on 28 Jun 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

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

Start Hunting!
## 0 Comments

Sign in to comment.