avarage of diagonal elements

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

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

0 votes

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

Mustafa Ahmed
Mustafa Ahmed le 3 Mai 2021
then how should i do it using Function like
function ave=myave(A)
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

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by