For what kind of norm is this code?
1 次查看(过去 30 天)
显示 更早的评论
A = randi(10,10);
norm = sqrt(sum(sum(A.*conj(A))) / prod(size(A)));
2 个评论
Walter Roberson
2016-9-5
For real-valued A it is
norm(A(:)) / sqrt(numel(A))
where norm(A(:)) is the L2 norm, norm(A(:),2)
It is not clear to me that with the divisor that the formula does in fact compute a norm in a mathematical sense. Perhaps it does.
采纳的回答
John BG
2016-9-5
Fred
Following common norms
1.
Euclidean norm:
the length of a 1D vector, understanding by length the distance to the coordinates origin.
a=randi(10,1,10)
norm(a)
for an NxM matrix
norm(A)
returns the largest singular value of A
A=randi(10,3,3)
A =
9 10 8
10 1 6
1 7 9
norm(A)
ans =
20.913376670878026
[U,S,V]=svd(A)
U =
-0.739646426689545 0.049232501991144 -0.671192464374475
-0.476728914605305 -0.742280226083208 0.470902970839120
-0.475029162751758 0.668278554731149 0.572495474062294
S =
20.913376670878026 0 0
0 7.953747324398639 0
0 0 3.516899162841603
V =
-0.568972497185512 -0.793516682233532 -0.215873973566917
-0.535465768966753 0.556718047022076 -0.635091667702206
-0.624136770036285 0.245756568858319 0.741658277882517
2.
L1-norm
is sum(abs(A)) of each element,
norm(A,1)
3.
natural norm, aka induced norm, aka subordinate norm, relative to vector reference z with z=1): |A| = max(norm(A*z))
4.
L2 norm
is like the one you asked for but without normalising factor that you bapply the division by prod(size(A))
norm(A)
5.
L-infinite norm
max of L1, the largest abs() of all results obtained with L1 norm max(abs(x))
norm(A,Inf)
or
norm(A,-Inf)
returns min(abs(A))
6.
supremum norm
7.
Hardy norm
8.
quaternion norm
9.
Frobenius norm:
norm(A,'fro')
returns sqrt(sum(diag(X'*X)))
So,
from
norm: A quantity that describes the length, size, or extent of a mathematical object.
at this point may I ask what is exactly that you are attempting to measure and therefore compare?
By pondering each element of the sum, you are somehow attempting to normalise the result, yet because you do not normalise with the actual norm, such normalising attempt may not work.
It may resemble a probability distribution, what you want to build, but again, it should be done in a different way.
Fred,
Let me close this first round by asking if you find this answer useful would you please be so kind to mark my answer as Accepted Answer?
To any other reader, please if you find this answer of any help solving your question,
please click on the thumbs-up vote link,
thanks in advance
John BG
2 个评论
John BG
2016-9-6
编辑:John BG
2016-9-6
ok, you are just damping, attenuating by a factor proportional to size of A.
the factor ../prod(size(A)) is some kind of averaging that smooths noise, ins't it?
But it also kills the signal.
I haven't refreshed or checked curvelet transform yet, (E.J. Candes, thanks for the reference) but on top of my head, wouldn't it work better without such ../prod(size(A))
or applying an attenuation that is independent of the size of A.
In radio, you see it more often that one would expect, adding coaxial to reduce noise with the attenuation of the otherwise completely unnecessary added stretch of line. It's a poor noise countermeasure.
Time ago I came across a UHF receiver design where they just added coax from the antenna in connector on the metal box to the front end screwed to the same box.
What I am trying to say is, if you are extracting signal from noise, does it really help to attenuate everything?
And shouldn't the ../prod(size(A)) be outside the sqrt, not inside?
apparently it may sound quieter, but you are also reducing the signal, right?
I am happy that you found my answer useful, happy to help with any other question.
Regards
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!