2017-02-03 66 views
0

我有一個矩陣(具有名稱'im'),如下所示:如何找到滿足以下條件的矩陣元素 - ,並將它們存儲在另一個陣列

enter image description here

矩陣只包含NaNs和字符‘A+’, ‘A-‘, ‘B+’ and ‘B-‘,但可以有儘可能多的行。 我需要找到(逐行)在我有‘A+’ and ‘B+’至少任意一個,或‘A+‘ and ‘B-‘‘A-‘, and ‘B-‘,或'A-' and 'B+'任何jPositions。我也希望將這些職位儲存在另一個matrix P中,如下所示。

enter image description here

Matrix Pno. of rows = k但k是從一開始不明。請注意,matrix P中顯示的2,3和4表示滿足感興趣條件的jPositions,從'im'

我在下面有這個僞代碼(不知道它是否正確),但我正在努力弄清楚如何編碼這個。

For I = 1: size(im, 2) If any of q, r, s, t, u has at least one of ‘A+’ or ‘A-‘, and any of q, r, s, t, u has at least one of ‘B+’ or ‘B-‘, Then: -select that position. -Store the result in matrix P end end

請任何幫助,建議或此建議是非常讚賞?先謝謝你。

+0

什麼是你的表的數據類型?它是一個「桌子」嗎?單元陣列?這個問題的解決方案在很大程度上取決於數據類型。 – rayryeng

+0

這是一個單元陣列 – User1772

+0

單元格數組是否包含標題信息,還是隻包含等級+'NaN'? – rayryeng

回答

0

有可能是一個更好的解決方案,但這應該工作:

有你的矩陣:

im = {NaN NaN 'B-' NaN NaN; 'A-' NaN NaN 'B+' NaN; NaN 'A+' 'B+' NaN 'B-'; NaN NaN NaN 'B-' 'A+'}; 

可以使用找到您的位置:

jPositions = find((any(strcmp('A+', im),2) | any(strcmp('A-', im),2)) & (any(strcmp('B+', im),2) | any(strcmp('B-', im),2))); 

STRCMP返回邏輯矩陣。任何2作爲第二個參數返回一個邏輯向量,它表示每行天氣它包含字符串。然後這些使用邏輯運算符進行組合,並查找返回爲真的行的索引。

這將返回:

jPositions = 2 3 4 
+0

謝謝@Aerl。我會很快檢查你的代碼。請問,你的代碼的第二行中的「M」是什麼?位置2是有效的,只是我錯誤地沒有把它包括在問題中。請參閱編輯的版本。乾杯! – User1772

+0

對不起,我忘了在第二行改變它是你的即時通訊。 此版本也會接受連續'A +'和'A-'的案例。如果你想排除它,你可以使用異或作爲邏輯運算符。 我更新了命令以查找所有四種組合。 – Aerl

+0

非常感謝你@Aerl。完美的作品。請,我想再提出一個請求。我怎樣才能找到每行「A +」和「A-」以及「B +」和「B-」的次數?例如在矩陣'im'中,我們有'行1:A = 0; B = 1;第2行:A = 1; B = 1;第3行:A = 1; B = 2;第4行:A = 1; B = 1;第n行:A =? B =?'謝謝你的幫助。 – User1772

相關問題