2014-03-02 85 views
0

我創建了一個數組tP,其中包含整數和非整數元素的混合。我想創建一個新的整數元素數組。從另一個數組的整數元素創建新的數組? MATLAB

我想的結果是在相同的形式被返回以用於,例如:

tP2=find(tP>300); 

即,其含有的整數值,而不是整數本身的列表元素號碼列表。

從這個我會,然後選擇所需的元素,像這樣:

tP3=tP(tP2); 

要爲整數做到這一點,我目前擁有的是:

tP2=find(isinteger(int16(tP))); 

但不是元素號碼列表,我剛剛得到tP2=1返回。

爲什麼isinteger在這種情況下不起作用,我如何才能達到我要求的結果?謝謝。

+0

除了你的問題,看看邏輯索引。你也可以使用'tP3 = tP(tP> 300)' – Daniel

+0

我不明白你的問題,一個數組(aka矩陣)可以是double或者uint8或者任何其他類型,但是所有的元素都有相同的類型。什麼數據類型是'tP2'?它是如何創建的? – Daniel

+1

'isinterger'是指數據類型。例如'double'可以有一個整數值,它仍然是一個double,而不是一個整型數據類型 –

回答

1

使用round

tp2 = find(tP == round(tP)); 
+0

問題解決了,非常感謝! – KLMac

0

由於夏嘉曦說,相較於round是檢測整數的有效途徑。

接下來,除非您需要匹配列表作爲其他內容,否則不需要find。只是比較會創建一個掩碼數組,掩碼可用於下標。

tP3 = tP(tP == round(tP)); 

擺脫tP2和調用find應該節省時間和內存。

+0

感謝您的意見。我應該指定我爲其他數組使用了這個元素數列表,所以會保留tP2,但我會在未來記住這個提示。 – KLMac

相關問題