how to span a 3*1 vector into a 3*3 skew symmetric matrix ?
349 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Stanley Cheng
am 18 Jun. 2014
Bearbeitet: Thanacha Choopojcharoen
am 12 Okt. 2023
Hi everyone, as the title,
x=[a b c]' is a 3*1 vector, and its 3*3 skew symmetric matrix is
X=[0 -c b ;
c 0 -a ;
-b a 0 ];
what command is all right to make it in Matlab ?
THX very much!
Cheers
2 Kommentare
Thanacha Choopojcharoen
am 12 Okt. 2023
Bearbeitet: Thanacha Choopojcharoen
am 12 Okt. 2023
I wrote a vectorized version of skew where v can be 3xn or nx3. This will return 3x3xn. Technically, this can be defined as a one-line anonymous function as well.
function S = skew(v)
a = size(v,1)==3;
n = size(v,round(1+a));
V = permute(v,[round(2-a),3,round(1+a)]);
I = repmat(eye(3),[1,1,n]);
S = cross(repmat(V,[1,3]),I);
end
Akzeptierte Antwort
Sean de Wolski
am 18 Jun. 2014
X=[0 -x(3) x(2) ; x(3) 0 -x(1) ; -x(2) x(1) 0 ];
3 Kommentare
John D'Errico
am 19 Jun. 2014
A great virtue of MATLAB (ok, almost any programming language) is the ability to write functions that do what you want. Making a skew-symmetric matrix from a vector is not something most people will ever need to do, so it is unlikely you would find a simple command to do it. However, since you can write functions that do anything you want, anything that you will do often, then do so. Personalize your version of MATLAB to include such tools that do what you have a need for.
In this case, a simple m-file would suffice. Or write a function handle if this is not something you will have a need for beyond today.
Finally, the code that Sean gives is easily vectorized to create a 3-d array, where each plane would be one such matrix.
Weitere Antworten (3)
Sergei Sergienko
am 5 Jun. 2020
Bearbeitet: Sergei Sergienko
am 5 Jun. 2020
There is special function for this in Matlab called skew
v = [1 2 3]';
skew(v)
ans =
0 -3 2
3 0 -1
-2 1 0
2 Kommentare
Mitsu
am 3 Dez. 2020
This function is not included, as of MATLAB 2019b; unless it is part of a specific additional toolbox.
Elyar Zavvari
am 12 Aug. 2021
You will find this function in matlab robotics toolbox by Kevin Lynch.
Raul Cajias
am 20 Apr. 2016
I think what you're looking for is the skewdec skewed function. However it's only available with the 'Robust Control Toolbox'.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!