Info
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
how can i genaralise this code for any m*n matrix?{the original question is to sum all the elements in the perimeter of a given matrix}?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Subramanian Mahadevan
el 25 de Sept. de 2016
Cerrada: MATLAB Answer Bot
el 20 de Ag. de 2021
This was my code;which works good for a 3*3 matrix.
function sum1 = peri_sum(A);
q=0;r=0;s=0;t=0;u=0;v=0;w=0;
A=[1:3;4:6;7:9];
q = A([1,end],2);
r = A(:,[1,end]);
s = reshape(q,1,2);
t = reshape(r,1,6);
u=sum(s);
v=sum(t);
w=u+v;
sum1 = w;
end
0 comentarios
Respuestas (2)
Image Analyst
el 25 de Sept. de 2016
Try this:
topSum = sum(A(1, 1:end))
bottomSum = sum(A(end, 1:end))
leftSum = sum(A(2:end-1, 1))
rightSum = sum(A(2:end-1, end))
perimeterSum = topSum + bottomSum + leftSum + rightSum
4 comentarios
Image Analyst
el 26 de Sept. de 2016
The loop was just to try different input matrices to make sure I didn't pick a sample test matrix that just happened to work.
So anyway, using [1,1;1,1], which has 1's all the way around the perimeter, and therefore has a sum of 4:
A = [1,1;1,1];
topSum = sum(A(1, 1:end));
bottomSum = sum(A(end, 1:end));
leftSum = sum(A(2:end-1, 1));
rightSum = sum(A(2:end-1, end));
perimeterSum = topSum + bottomSum + leftSum + rightSum
This gives perimeterSum = 4 as expected. So, you forgot to tell me what you expect the sum of the outer perimeter values of that to be. Obviously you don't think it's 4, but what do you think it should be, and why?
Andrei Bobrov
el 26 de Sept. de 2016
a = randi(9,3,5)
s = size(a);
t = true(s);
t(2:end-1,2:end-1) = false(s-2);
out = sum(a(t));
2 comentarios
James Tursa
el 26 de Sept. de 2016
Andrei's code and your code give the same result for this A matrix, 40.
La pregunta está cerrada.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!