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 Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by