avarage of diagonal elements

8 vues (au cours des 30 derniers jours)
Mustafa Ahmed
Mustafa Ahmed le 3 Mai 2021
Commenté : Mustafa Ahmed le 3 Mai 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 commentaire
Mustafa Ahmed
Mustafa Ahmed le 3 Mai 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

Connectez-vous pour commenter.

Réponses (1)

Adam Danz
Adam Danz le 3 Mai 2021
Modifié(e) : Adam Danz le 3 Mai 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 commentaires
Adam Danz
Adam Danz le 3 Mai 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 le 3 Mai 2021
thank you

Connectez-vous pour commenter.

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by