2017-02-03 41 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

相关问题