avarage of diagonal elements

11 visualizaciones (últimos 30 días)
Mustafa Ahmed
Mustafa Ahmed el 3 de Mayo de 2021
Comentada: Mustafa Ahmed el 3 de Mayo de 2021
Write a Matlab function that calculates the average of the elements of the diagonal of a matrix M.
Be careful, before doing this calculation, your function must check if M is a scalar, a vector or a
matrix. In case it is a scalar or a vector, it must return 0
  1 comentario
Mustafa Ahmed
Mustafa Ahmed el 3 de Mayo de 2021
i did like that ,,,, but it is not enough and did not work
function ave = average(A)
if ismatrix(A)
[r,c] = size(A);
for i=1:r
for j=1:c
b = diag(A)
ave=b./size(A)
end
end
end

Iniciar sesión para comentar.

Respuestas (1)

Adam Danz
Adam Danz el 3 de Mayo de 2021
Editada: Adam Danz el 3 de Mayo de 2021
Since this appears to be an assignment I can help by explaining what's wrong and nudging you in the right direction.
Two errors in this line:
ave=b./size(A)
1) The size function returns the number of rows in the first output. If A is a square matrix, that's OK but if A is not square, it's very wrong. A is probablly square since you need the diagonal buy why not play it safer by using the number of elements in b instead of the number of rows in A? See numel().
2. That line is computing element-wise division instead of the computing the mean. "./" vs "/"
Also, you don't need any of the loops.
  3 comentarios
Adam Danz
Adam Danz el 3 de Mayo de 2021
Like I said, I can point you in the right direction but I won't do it for you.
You don't need the loops. You only need the lines within the loops.
Look at what this line does, look at the output
b = diag(A)
That's what you need to average.
Mustafa Ahmed
Mustafa Ahmed el 3 de Mayo de 2021
thank you

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by