Any matlab gurus here?

  • MATLAB
  • Thread starter morry
  • Start date
136
0

Main Question or Discussion Point

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 dont know of any commands to show this.

Thanks guys.
 

Answers and Replies

TD
Homework Helper
1,020
0
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
 
SGT
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].
 
1,424
1
Talking about matlab, how do you intergrate area or distance from a point to another with a function?
 
SGT
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
 
uart
Science Advisor
2,776
9
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 dont 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 occurance of zeros in the off diagonal positions tell you?
 
136
0
uart said:
Think about this Morry, if you pre-multiple the matrix by it's transpose (M'*M), what does the occurance of zeros in the off diagonal positions tell you?
This would show that its orthog wouldnt it? I have to show that the vectors are orthonormal aswell though.

Thanks a lot for your help guys. I knew there was a little trick I had to do. Cheers.
 
SGT
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
 
136
0
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 cant 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.
 
SGT
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 cant 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]
 
136
0
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?
 
SGT
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.
 
1,349
2
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
 
136
0
Cheers everyone, I finally got the q out. I think I was being a bit of a dumbarse. :)
 

Related Threads for: Any matlab gurus here?

Replies
2
Views
2K
Replies
2
Views
3K
  • Last Post
Replies
1
Views
8K
Replies
6
Views
70K
Replies
0
Views
7K
Top