avarage of diagonal elements

10 views (last 30 days)
Mustafa Ahmed
Mustafa Ahmed on 3 May 2021
Commented: Mustafa Ahmed on 3 May 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 Comment
Mustafa Ahmed
Mustafa Ahmed on 3 May 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

Sign in to comment.

Answers (1)

Adam Danz
Adam Danz on 3 May 2021
Edited: Adam Danz on 3 May 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 Comments
Adam Danz
Adam Danz on 3 May 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.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!