Moving Norm using Vectorization
Ältere Kommentare anzeigen
Hi everyone,
I was wondering how to calculate the "moving norm" of a vector. For example, suppose I have a vector v1 = [a b c d e];
I want to calculate the moving norm involving 3 elements. The first element of the output will be incomplete because we haven't had time to "move over" the vector v1.
The first element of the output array is: norm([0 0 a])
The second element of the output array is: norm([0 a b])
The third element of the output array is: norm([a b c])
The fourth element of the output array is: norm([b c d])
...
The last element of the output array is: norm([e 0 0])
It would be good if all the elements are in one vector, and that vector could be calculated quickly using vectorization. I am already aware of solving this problem using a loop, but I am curious about how to do this faster.
Thank you very much for your help in advance.
Akzeptierte Antwort
Weitere Antworten (1)
Walter Roberson
am 29 Aug. 2011
t = hankel([zeros(1,length(v1)-1) v1]);
out = sqrt(sum(t(1:length(v1),:).^2));
Knew I'd find a use for hankel() someday!
1 Kommentar
bym
am 29 Aug. 2011
@Walter - I was just working on an answer that involved hankel, glad you beat me to the punch +1 vote
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!