Hello! How can I make MATLAB return the smallest, positive, purely real value from a column matrix?

5 次查看(过去 30 天)
Hello, I would like to know how to make MATLAB return the smallest, positive, purely real value from a column matrix of length n which may contain complex and negative numbers.
So I already know how to get the length of the column matrix. In my case, the column matrix, (Uf), is made from the roots of a polynomial called T3. i.e.
Uf = roots(T3);
The polynomial, T3, is made up of convolutes of other polynomials which I have written in matrix form. If I input certain values for those smaller polynomials, the following function will not return the smallest positive value, and doesn't even know what the variable U_flutter is.
i = 1;
j = 0;
while i<=length(Uf);
notcomplex = isreal(Uf(i,1));
if notcomplex == 1 && Uf(i,1)>=0;
Ufl = Uf(i,1);
if Ufl < j;
U_flutter = Ufl;
else
j = Ufl;
end
else
if Uf(i,1)>0
U_flutter = j;
end
end
i = i + 1;
end
Thanks!

采纳的回答

Matt Fig
Matt Fig 2012-11-28
编辑:Matt Fig 2012-11-28
Uf = [0.84888 + 0.74301i
-1
0.31434 + 1.1736i
0.31434 - 1.1736i
3
-0.40027 - 1.2365i
-0.78795 + 0.20233i
5]
% Get the smallest, real, positive value if there is one.
idx = imag(Uf)==0 & real(Uf)>0;
sv = min(Uf(idx))

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by