2014-01-28 45 views
2

任何根我需要創建一個腳本,輸出將只有真正的負奇數根。Matlab:真正的負奇數根

例如:rtemp = [-8 -8 -8 -8 4 -1 3]

只選擇真正的負面根(也有一些情況下,當根是複雜的,所以我不想複雜的根源:

rneg=[]; 
for i=1:length(rtemp) 
    if(isreal(rtemp(i))==1) && (rtemp(i)<0) 
     rneg = [rneg rtemp(i)]; 
    end 
end 

rneg = 

    -8 -8 -8 -8 -1 

現在我只只希望在這個例子中,-8是偶數根(4次),-1是奇數,所以輸出將只有-1,如果是rtemp = [-8 -8 -8 4 -1 3],-8將是一個奇數根(3次),所以輸出將[-1 -8]。 我怎麼能寫只有奇怪的根?謝謝!

回答

2

要獲得負實根:

rneg = rtemp(imag(rtemp)==0 & real(rtemp) < 0) 

然後得到的只有奇根:

R = min(rneg):max(rneg); 
final = R(mod(histc(rneg,R),2)==1) 
+0

+1不過需要注意的'isreal'檢測類型,而不是價值。例如,'isreal(complex(1))'''false''給予者。根據根的方式,測試'imag(rtemp)== 0'而不是'isreal(rtemp)'可能會更安全(儘管存在與實數比較相關的問題) –

+0

@LuisMendo You are right,它也看起來像'isreal'不會返回一個向量,加上'<0'在一個複數的向量上失敗。現在修復。 – Dan