SVD

7 次查看(过去 30 天)
Shrinivas Gombi
Shrinivas Gombi 2011-7-13
In MATLAB,if we take the svd(X)of a column matrix,we r supposed to get the product of three matrices after decomposition.I want to take the pseudo inverse of this matrix pinv(svd(X)).but after svd I am getting a single number instead a matrix.Pl help me why like this.I am reqd to maultiply another column matrix to this inverse matrix to get the answer. Ex: Force F = pinv(svd(FRF))*A, actually I am expecting pinv(svd(FRF)) should be a 1x3 size and Acceleration matrix A should be of 3x1.Kindly help me to resolve this Shrinivas Gombi

回答(2 个)

Walter Roberson
Walter Roberson 2011-7-13
svd(X) by itself returns a vector of singular values. The vector will be a column vector of length min(size(X)) . When X is a column vector, min(size(X)) will be 1, so svd(X) will return a scalar.
If you want to be working with matrices, you should probably be using the multi-output version of svd,
[U,S,V] = svd(X);
  2 个评论
Shrinivas Gombi
Shrinivas Gombi 2011-7-14
Dear SIr, When I plot FRF vs FRequency curves I can locate the no. of natural frequencies.I want to apply svd to my matrix 'FRF'in the equation Force F = pinv(svd(FRF))*A,at specified values of these natural frequencies Ex: When i= 110,245,486 etc. I want to apply pinv(svd(FRF(i)))& for other values of'i' I dont.FRF(i) is of 30000x1,i.e i= 0 to 30000.Pl let me know how to write the MATLAB steps.
Walter Roberson
Walter Roberson 2011-7-14
[u s v] = svd(FRF(i));
F = pinv(s);
Note: this will be equivalent to
F = zeros(1,length(i));
s = svd(FRF(i));
if s ~= 0; F(1) = 1/s; end;

请先登录,再进行评论。


Krishna Kumar
Krishna Kumar 2011-7-13
When you do svd of a column matrix, you get 3 matrices [u s v]=svd(X) if X is nx1 vector, u is n*n,s is n*1 and v is 1*1 now if use svd(X) without output args you get 1x1 value, i.e the first entry in s. The remaining entries in 's' are actually zeros. Hope this could help you find a way out.
  1 个评论
Shrinivas Gombi
Shrinivas Gombi 2011-7-14
Dear SIr, When I plot FRF vs FRequency curves I can locate the no. of natural frequencies.I want to apply svd to my matrix 'FRF'in the equation Force F = pinv(svd(FRF))*A,at specified values of these natural frequencies Ex: When i= 110,245,486 etc. I want to apply pinv(svd(FRF(i)))& for other values of'i' I dont.FRF(i) is of 30000x1,i.e i= 0 to 30000.Pl let me know how to write the MATLAB steps.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by