Solving Matrix Orthonormalization Problem with MATLAB

  • Context: MATLAB 
  • Thread starter Thread starter morry
  • Start date Start date
  • Tags Tags
    Matlab
Click For Summary

Discussion Overview

The discussion revolves around using MATLAB to demonstrate that the columns of a 3x3 matrix are orthonormal. Participants explore methods for verifying orthogonality and normality of vectors derived from the matrix, as well as addressing errors encountered in MATLAB during these calculations.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Homework-related

Main Points Raised

  • One participant expresses difficulty in using MATLAB to show that the columns of a matrix are orthonormal, encountering dimension mismatch errors when attempting vector multiplication.
  • Another participant explains that to multiply two vectors in MATLAB, the dot operator should be used for element-wise multiplication instead of standard matrix multiplication.
  • A suggestion is made that to prove orthogonality, the scalar products of the vectors should be calculated, specifically mentioning the products V_1 * V_2^', V_2 * V_3^', and V_3 * V_1^'.
  • Participants discuss the method of pre-multiplying the matrix by its transpose to check for orthogonality, noting that zeros in the off-diagonal positions indicate orthogonality.
  • It is mentioned that for vectors to form an orthonormal basis, they must be both orthogonal and unit vectors, with a unit vector having a modulus of 1.
  • One participant reports success in obtaining 1s on the diagonal of V'*V, indicating unit vectors, but struggles with finding the moduli of the vectors using MATLAB.
  • There is a discussion about orthogonally diagonalizing a matrix and how to find eigenvalues and eigenvectors using MATLAB commands.
  • Concerns are raised about whether eigenvectors are necessarily orthonormal, with clarification that they only need to be linearly independent to form a basis.
  • Participants discuss the lack of a single command in MATLAB to calculate the modulus of a vector, suggesting that V'*V is a straightforward method.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the methods for verifying orthonormality and the specific MATLAB commands to use. There are multiple approaches and some uncertainty regarding the properties of eigenvectors.

Contextual Notes

Some participants mention limitations in their understanding of MATLAB commands and the mathematical properties of vectors, indicating a need for further clarification on these topics.

Who May Find This Useful

This discussion may be useful for students or practitioners working with linear algebra and MATLAB, particularly those interested in matrix properties and orthonormalization techniques.

morry
Messages
136
Reaction score
0
Ok, this should be a simple problem, but its not working out for me.

I need to use MATLAB to show that the columns of a 3x3 matrix are orthonormal. I called each of the columns separate vectors, because I thought it would be easier. So now I have 3 3x1 vectors. I want to multiply them together to show they are orthogonal.
But MATLAB keeps returning an error. Saying that internal dimensions must match or something. Anyone know why this is happening?

Also, is there an easy way to show that the vectors are normal? I don't know of any commands to show this.

Thanks guys.
 
Physics news on Phys.org
Matrix calculates everything with matrices. When you have 2 vectors with dimensions 1x4 (e.g. X and Y) and you want to multiply them, you cannot do X*Y since that would be multiplying a (1x4) with a (1x4) and that's impossible. You can use the dot-operator so that Matlab multiplies them element-by-element rather then seeing it as a matrix multiplication.

Instead of doing x*y, try x.*y
 
To prove that the vectors are orthogonal, their scalar product must be zero. Calling your vectors [tex]V_1, V_2, V_3[/tex], you must find the products:
[tex]V_1 * V_2^'[/tex], [tex]V_2 * V_3^'[/tex] and [tex]V_3 * V_1^'[/tex].
 
Talking about matlab, how do you intergrate area or distance from a point to another with a function?
 
Werg22 said:
Talking about matlab, how do you intergrate area or distance from a point to another with a function?
If you mean the area below a function, you can use the functions:
quad Use adaptive Simpson quadrature
quadl Use adaptive Lobatto quadrature
 
morry said:
Ok, this should be a simple problem, but its not working out for me.

I need to use MATLAB to show that the columns of a 3x3 matrix are orthonormal. I called each of the columns separate vectors, because I thought it would be easier. So now I have 3 3x1 vectors. I want to multiply them together to show they are orthogonal.
But MATLAB keeps returning an error. Saying that internal dimensions must match or something. Anyone know why this is happening?

Also, is there an easy way to show that the vectors are normal? I don't know of any commands to show this.

Thanks guys.

Think about this Morry, if you pre-multiple the matrix by it's transpose (M'*M), what does the occurrence of zeros in the off diagonal positions tell you?
 
uart said:
Think about this Morry, if you pre-multiple the matrix by it's transpose (M'*M), what does the occurrence of zeros in the off diagonal positions tell you?

This would show that its orthog wouldn't it? I have to show that the vectors are orthonormal as well though.

Thanks a lot for your help guys. I knew there was a little trick I had to do. Cheers.
 
In order for the vectors to form an orthonormal basis, they must be orthogonal and unit.
A unit vector has modulus 1.
|V| = V'*V
 
Thanks SGT. Doing V'*V gives me 1s on the diagonal.

How would I actually go about orthog. diagonalising this matrix? If I was doing this by hand, I would just divide by its modulus, but I can't find the moduli of these vectors using matlab.

I have multiplied the 3x1 vectors to try and get them to equal 0, but they are not equalling 0.

Thanks guys.
 
  • #10
morry said:
Thanks SGT. Doing V'*V gives me 1s on the diagonal.

How would I actually go about orthog. diagonalising this matrix? If I was doing this by hand, I would just divide by its modulus, but I can't find the moduli of these vectors using matlab.

I have multiplied the 3x1 vectors to try and get them to equal 0, but they are not equalling 0.

Thanks guys.
If [tex]P[/tex] is an orthogonal matrix and [tex]B = P^{-1}AP = P'AP[/tex], then [tex]B[/tex] is said orthogonally similar to [tex]A[/tex].
If [tex]A[/tex] is real and symetric, it is orthogonally similar to a diagonal matrix whose diagonal elements are the eigenvalues of [tex]A[/tex].
In Matlab the command [tex][V,D] = eig(A)[/tex] returns two matrices. [tex]D[/tex] is a diagonal matrix containing the eigenvalues of [tex]A[/tex] and is orthogonally similar to [tex]A[/tex]. [tex]V[/tex] is a matrix containing in its columns the eigenvectors of [tex]A[/tex].
We have [tex]D = V^{-1}AV = V'AV[/tex]
 
  • #11
Thanks again SGT.

I am still unsure about how to show that my eigenvectors are orthonormal? I tried multiplying them like you mentioned, but they come out as numbers, not zero. Also, is there a command that finds the modulus of the vectors?
 
  • #12
The eigenvectors are not necessarilly orthonormal. All it is required is that they are linearly independent in order to form a basis.
To my knowledge there is no single command to calculate the modulus of a vector, but the command V´*V is so simple that I think any other command would be longer to type.
 
  • #13
v'v or vv' depending on if you used columns or vectors. or i believe there is a norm function. use the condition v'v or vv' < 1+e where e is a sufficiently small threshold

orthonormal system:
vi'vi < 1+e
abs(vi'vj)< 0+e
 
  • #14
Cheers everyone, I finally got the q out. I think I was being a bit of a dumbarse. :)
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
10K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K