trying to write matlab code for Frobenius norm of an mxn matrix
18 views (last 30 days)
Show older comments
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
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'
Answers (3)
Wayne King
on 23 Feb 2013
Why not just use:
norm(X,'fro')
For example:
X = randn(8,8);
norm(X,'fro')
0 Comments
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
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!