Magnitude of a matrix

136 views (last 30 days)
David Harra
David Harra on 16 Sep 2021
Commented: Star Strider on 16 Sep 2021
I have a 1000 x 3 matrix where each column is associated the the x,y and z-direction. For each row I want to find the magnitude such that I have a 1000 x 1 array returned.
x=randi(100,1000,3);
X=norm(x(1:1000,1:3))
I tried this but I am only only getting a single number rather than a 1000 x 3 array.
Thanks
Dave :)

Accepted Answer

Star Strider
Star Strider on 16 Sep 2021
See if the vecnorm funcion (introduced in R2017b) will do what you want —
x=randi(100,1000,3);
X=vecnorm(x,2,2)
X = 1000×1
89.5600 69.0290 104.2785 84.2734 42.9185 76.2693 105.6504 96.7316 64.1950 113.6002
.
  2 Comments
David Harra
David Harra on 16 Sep 2021
Thanks.
Could I just ask you about this line
X=vecnorm(x,2,2)
I can see this takes my matrix x as the first argument, but what does the 2,2 inside the bracket do?
Dave :)
Star Strider
Star Strider on 16 Sep 2021
My pleasure!
The first 2 specifies the 2-norm (rather than others), and the second 2 specifies that the function is to take the norm across the rows (dimension 2) rather than down the columns (dimension 1, the default dimension) or other dimensions if the matrix had more than 2.
Specifying only the matrix would take the 2-norm of the columns.
.

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!