Clear Filters
Clear Filters

avarage of diagonal elements

4 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.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!