trying to write matlab code for Frobenius norm of an mxn matrix

18 views (last 30 days)
Hello, hoping someone can guide me, i asked my question on another forum, but realised this place could have better help,....with matlab, I have provided the link below, cause I cannot write the mathematical formula on here,
any help greatly appreciated.
the code i have written so far is
function w = frobeniusnorm(a,m,n) for i =1:m sm = 0 for j =1:n sm = sm+A(i,j)*a^2(i,j); end
which does not work
  1 Comment
Muthu Annamalai
Muthu Annamalai on 23 Feb 2013
The problem with your code, Shelly, seems to be
function w = frobeniusnorm(a,m,n)
for i =1:m
sm = 0
for j =1:n
sm = sm+A(i,j)*a^2(i,j);
end
end
end
you have sm = 0, reinitialized every time. You need to move it out of the first for-loop.
A better solution without using the built-in norm() function is to write out sums,
sm = sqrt( sum(sum(A.^2)) )
I would strongly recommend you read the MATLAB tutorial on matrix indexing http://www.mathworks.com/help/matlab/math/matrix-indexing.html and use what is called 'vectorized code'

Sign in to comment.

Answers (3)

Wayne King
Wayne King on 23 Feb 2013
Why not just use:
norm(X,'fro')
For example:
X = randn(8,8);
norm(X,'fro')

shelly
shelly on 23 Feb 2013
yeah I know this particular function,n but I have to first write the code and than compare my answers with matlab's built in function.

Rolando Molina
Rolando Molina on 13 Apr 2018
I think that this code was the original intention, and works:
function fn = frobenius_norm_mn_matrix(A,m,n) si=0; for i =1:m sj = 0; for j =1:n sj = sj+A(i,j)^2; end si=si+sj; end fn=sqrt(si) end

Tags

Community Treasure Hunt

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

Start Hunting!